Hướng dẫn how do i read a 100gb file in python? - làm cách nào để đọc tệp 100gb trong python?
306 Show Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Tôi muốn đọc một tệp lớn (> 5GB), từng dòng, mà không tải toàn bộ nội dung của nó vào bộ nhớ. Tôi không thể sử dụng 5 vì nó tạo ra một danh sách rất lớn trong bộ nhớ.
Karl Knechtel 59.3k10 Huy hiệu vàng86 Huy hiệu bạc130 Huy hiệu đồng10 gold badges86 silver badges130 bronze badges Đã hỏi ngày 25 tháng 6 năm 2011 lúc 2:04Jun 25, 2011 at 2:04
1 Sử dụng vòng lặp 6 trên một đối tượng tệp để đọc từng dòng. Sử dụng 7 để cho phép Trình quản lý bối cảnh đảm bảo rằng tệp được đóng sau khi đọc:
Mateen Ulhaq 22.3K16 Huy hiệu vàng86 Huy hiệu bạc127 Huy hiệu đồng16 gold badges86 silver badges127 bronze badges Đã trả lời ngày 25 tháng 6 năm 2011 lúc 2:26Jun 25, 2011 at 2:26
John La Rooyjohn La RooyJohn La Rooy Phù bằng vàng 287K5151 gold badges359 silver badges500 bronze badges 9 Tất cả những gì bạn cần làm là sử dụng đối tượng tệp làm trình lặp.
Thậm chí tốt hơn là sử dụng Trình quản lý ngữ cảnh trong các phiên bản Python gần đây.
Điều này cũng sẽ tự động đóng tệp là tốt. Đã trả lời ngày 25 tháng 6 năm 2011 lúc 2:07Jun 25, 2011 at 2:07
3 Một cách tiếp cận trường học cũ:
Đã trả lời ngày 25 tháng 6 năm 2011 lúc 2:31Jun 25, 2011 at 2:31
PtbnlptbnlPTBNL 6.0274 Huy hiệu vàng27 Huy hiệu bạc33 Huy hiệu đồng4 gold badges27 silver badges33 bronze badges 2 Vui lòng thử điều này:
Đã trả lời ngày 25 tháng 1 năm 2018 lúc 14:48Jan 25, 2018 at 14:48
Jyoti Dasjyoti Dasjyoti das 2062 Huy hiệu bạc5 Huy hiệu Đồng2 silver badges5 bronze badges 2 Thay vào đó, bạn nên sử dụng một iterator. Có liên quan: 8 - Lặp lại các dòng từ nhiều luồng đầu vào.Relevant: 8 — Iterate over lines from multiple input streams.Từ các tài liệu:
Điều này sẽ tránh sao chép toàn bộ tệp vào bộ nhớ cùng một lúc.
Martineau Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges Đã trả lời ngày 25 tháng 6 năm 2011 lúc 2:06Jun 25, 2011 at 2:06
MikolamikolaMikola 8.9372 Huy hiệu vàng33 Huy hiệu bạc41 Huy hiệu đồng2 gold badges33 silver badges41 bronze badges 1 Đây là những gì bạn làm nếu bạn không có dòng mới trong tệp:
Sivann 2.0464 Huy hiệu vàng28 Huy hiệu bạc44 Huy hiệu đồng4 gold badges28 silver badges44 bronze badges Đã trả lời ngày 6 tháng 5 năm 2018 lúc 15:20May 6, 2018 at 15:20
Ariel Cabibariel CabibAriel Cabib 2.01218 Huy hiệu bạc14 Huy hiệu đồng18 silver badges14 bronze badges 2 Tôi không thể tin rằng nó có thể dễ dàng như câu trả lời của @john-la-rooy. Vì vậy, tôi đã tạo lại lệnh 9 bằng cách đọc và viết theo dòng. Nó thật nhanh.
Đã trả lời ngày 10 tháng 8 năm 2017 lúc 21:48Aug 10, 2017 at 21:48
Bruno Bronoskybruno BronoskyBruno Bronosky 63K11 Huy hiệu vàng154 Huy hiệu bạc138 Huy hiệu đồng11 gold badges154 silver badges138 bronze badges 1 Dự án Blaze đã đi một chặng đường dài trong 6 năm qua. Nó có một API đơn giản bao gồm một tập hợp con hữu ích của các tính năng gấu trúc. Dask.DataFrame chăm sóc việc chunking trong nội bộ, hỗ trợ nhiều hoạt động song song và cho phép bạn xuất khẩu các lát trở lại gấu trúc dễ dàng cho các hoạt động trong bộ nhớ.
Đã trả lời ngày 22 tháng 1 năm 2018 lúc 20:51Jan 22, 2018 at 20:51
JPPJPPjpp 153K32 Huy hiệu vàng260 Huy hiệu bạc319 Huy hiệu Đồng32 gold badges260 silver badges319 bronze badges Đây là mã để tải các tệp văn bản ở bất kỳ kích thước nào mà không gây ra sự cố bộ nhớ. Nó hỗ trợ các tệp có kích thước gigabyteIt support gigabytes sized files https://gist.github.com/iyvinjose/e6c1cb2821abd5f01fd1b9065cbc759d Tải xuống tệp data_loading_utils.py và nhập nó vào mã của bạndata_loading_utils.py and import it into your code cách sử dụng
Phương thức Process_Lines là hàm gọi lại. Nó sẽ được gọi cho tất cả các dòng, với dữ liệu tham số đại diện cho một dòng của tệp tại một thời điểm. method is the callback function. It will be called for all the lines, with parameter data representing one single line of the file at a time. Bạn có thể định cấu hình biến chunk_size tùy thuộc vào cấu hình phần cứng máy của bạn.CHUNK_SIZE depending on your machine hardware configurations. Đã trả lời ngày 25 tháng 7 năm 2018 lúc 2:32Jul 25, 2018 at 2:32
Iyvin Joseiyvin JoseIyvin Jose 6875 Huy hiệu bạc17 Huy hiệu đồng5 silver badges17 bronze badges 1 Còn cái này thì sao? Chia tệp của bạn thành các khối và sau đó đọc từng dòng, vì khi bạn đọc một tệp, hệ điều hành của bạn sẽ lưu trữ dòng tiếp theo. Nếu bạn đang đọc từng dòng tệp, bạn sẽ không sử dụng hiệu quả thông tin được lưu trong bộ nhớ cache. Thay vào đó, hãy chia tệp thành các khối và tải toàn bộ khối vào bộ nhớ và sau đó thực hiện xử lý của bạn. 0
Đã trả lời ngày 25 tháng 10 năm 2017 lúc 0:30Oct 25, 2017 at 0:30
1 Cảm ơn bạn! Gần đây tôi đã chuyển đổi thành Python 3 và đã thất vọng khi sử dụng các đường đọc (0) để đọc các tệp lớn. Điều này đã giải quyết vấn đề. Nhưng để có được mỗi dòng, tôi đã phải thực hiện một vài bước bổ sung. Mỗi dòng được đi trước bởi một "B '" mà tôi đoán rằng nó ở định dạng nhị phân. Sử dụng "Giải mã (UTF-8)" đã thay đổi nó ASCII. Sau đó, tôi phải loại bỏ một "= \ n" ở giữa mỗi dòng. Sau đó, tôi chia các dòng ở dòng mới. 1Dưới đây là mã bắt đầu ngay trên "Dữ liệu in" trong mã của Arohi.
Đã trả lời ngày 18 tháng 1 năm 2018 lúc 15:28Jan 18, 2018 at 15:28
Giải pháp tốt nhất tôi tìm thấy về điều này và tôi đã thử nó trên tệp 330 MB. 2Trong đó line_length là số lượng ký tự trong một dòng. Ví dụ: "ABCD" có độ dài dòng 4. Tôi đã thêm 2 chiều dài dòng để bỏ qua ký tự '\ n' và chuyển sang ký tự tiếp theo. Đã trả lời ngày 2 tháng 5 năm 2020 lúc 12:46May 2, 2020 at 12:46
Ali Sajjadali SajjadAli Sajjad 2.60922 huy hiệu bạc34 huy hiệu đồng22 silver badges34 bronze badges Tôi nhận ra điều này đã được trả lời khá lâu trước đây, nhưng đây là cách thực hiện song song mà không giết chết bộ nhớ của bạn trên đầu (đó sẽ là trường hợp nếu bạn cố gắng bắn từng dòng vào nhóm). Rõ ràng trao đổi hàm readjson_line2 cho một cái gì đó hợp lý - nó chỉ để minh họa điểm ở đây! Speedup sẽ phụ thuộc vào tệp và những gì bạn đang làm với từng dòng - nhưng trường hợp xấu nhất cho một tệp nhỏ và chỉ đọc nó với trình đọc JSON, tôi thấy hiệu suất tương tự với ST với các cài đặt bên dưới. Hy vọng rằng hữu ích cho ai đó ngoài kia: 3Đã trả lời ngày 2 tháng 3 năm 2021 lúc 13:36Mar 2, 2021 at 13:36
Amiga500Amiga500Amiga500 1.1631 Huy hiệu vàng6 Huy hiệu bạc9 Huy hiệu đồng1 gold badge6 silver badges9 bronze badges Điều này có thể hữu ích khi bạn muốn làm việc song song và chỉ đọc các khối dữ liệu nhưng giữ cho nó sạch sẽ với các dòng mới. 4
Ahmad 66.4K17 Huy hiệu vàng108 Huy hiệu bạc135 Huy hiệu đồng17 gold badges108 silver badges135 bronze badges Đã trả lời ngày 10 tháng 5 năm 2019 lúc 12:00May 10, 2019 at 12:00
AdamadamAdam 4592 Huy hiệu bạc15 Huy hiệu Đồng2 silver badges15 bronze badges Làm cách nào để đọc tệp 100 GB trong Python?Đọc các tệp văn bản lớn trong Python, chúng ta có thể sử dụng đối tượng tệp làm trình lặp. Trình lặp sẽ trả về từng dòng một, có thể được xử lý. Điều này sẽ không đọc toàn bộ tệp vào bộ nhớ và phù hợp để đọc các tệp lớn trong Python.use the file object as an iterator. The iterator will return each line one by one, which can be processed. This will not read the whole file into memory and it's suitable to read large files in Python.
Làm cách nào để tìm thấy các tệp lớn trong Python?Tìm kiếm Python cho một chuỗi trong các tệp văn bản.. Nếu một tệp nhỏ, hãy đọc nó vào một chuỗi và sử dụng phương thức Find () để kiểm tra xem một chuỗi hoặc từ có có trong một tệp không. (... Nếu một tệp lớn, hãy sử dụng MMAP để tìm kiếm một chuỗi trong một tệp. .... Tìm kiếm một chuỗi trong nhiều tệp .. Tệp tìm kiếm cho một danh sách các chuỗi .. Làm cách nào để đọc một tệp văn bản dài trong Python?Để đọc một tệp văn bản trong Python, bạn làm theo các bước sau: Đầu tiên, hãy mở một tệp văn bản để đọc bằng cách sử dụng hàm Open ().Thứ hai, đọc văn bản từ tệp văn bản bằng cách sử dụng phương thức read (), readline () hoặc readlines () của đối tượng tệp.Thứ ba, đóng tệp bằng phương thức đóng tệp ().
Làm thế nào để Python đọc kích thước tệp?Mô -đun HĐH Python có hàm Stat () trong đó chúng ta có thể chuyển tên tệp làm đối số.Hàm này trả về một cấu trúc tuple chứa thông tin tệp.Sau đó, chúng ta có thể lấy thuộc tính ST_SIZE của nó để có được kích thước tệp tính bằng byte.. This function returns a tuple structure that contains the file information. We can then get its st_size property to get the file size in bytes. |