def read_log_chunks(self, ti: TaskInstance, try_number: Optional[int], metadata) -> Tuple[List[str], Dict[str, Any]]: """ Reads chunks of Task Instance logs. :param ti: The taskInstance :type ti: TaskInstance :param try_number: If provided, logs for the given try will be returned. Otherwise, logs from all attempts are returned. :type try_number: Optional[int] :param metadata: A dictionary containing information about how to read the task log :type metadata: dict :rtype: Tuple[List[str], Dict[str, Any]] The following is an example of how to use this method to read log: . code-block:: python logs, metadata = task_log_reader.read_log_chunks(ti, try_number, metadata) logs = logs[0] if try_number is not None else logs where task_log_reader is an instance of TaskLogReader. The metadata will always contain information about the task log which can enable you read logs to the end. """ logs, metadatas = self.log_handler.read(ti, try_number, metadata=metadata) metadata = metadatas[0] return logs, metadata Đây là một lưu ý nhanh để giúp giảm chi phí bộ nhớ khi đọc các tệp văn bản lớn. Tôi gặp sự cố khi tôi cần xử lý các tệp văn bản lớn có kích thước từ vài trăm MB đến vài GB và cách tải tệp truyền thống vào bộ nhớ đang làm chậm đáng kể máy tính. Đôi khi máy tính không phản hồi khi tệp đang được tải Show Sau khi tìm kiếm và thử nghiệm một chút, chức năng tạo Python dường như giải quyết được vấn đề. Bài đăng này kết hợp hai giải pháp được cung cấp trong các liên kết sau https. //www. tạp chídev. com/32059/read-large-text-files-in-python https. // stackoverflow. com/questions/519633/lazy-method-for-reading-big-file-in-python Trước khi đi đến giải pháp, tôi cần đề cập rằng một trong những trở ngại mà tôi gặp phải là do tệp nguồn ban đầu của tôi không có ngắt dòng rõ ràng. Tôi đang sử dụng chức năng cuộn để truy xuất 10.000 bản ghi Elaticsearch cùng một lúc và chỉ cần ghi chúng vào một tệp khác trước khi tải nó lên nhóm S3 Các tập tin sẽ trông giống như thế này
Bước đầu tiên là làm cho các bản ghi được phân định rõ ràng bằng cách ngắt dòng trong tệp gốc, điều này làm tăng kích thước nhưng giúp việc phân tích cú pháp dễ dàng hơn rất nhiều
Tập lệnh đầu tiên sử dụng câu lệnh
Tập lệnh thứ hai sử dụng hàm
Đây là kết quả hoạt động, số bộ nhớ tính bằng kilobyte (https. // trang chủ. debian. org/buster/manpages-dev/getrusage. 2. vi. html)
Như liên kết ở trên cùng cho biết, chúng tôi cũng có thể sử dụng Tôi hy vọng điều này mang lại một số giá trị cho mọi người khi họ cần xử lý một tệp văn bản lớn, tôi biết thỉnh thoảng tôi sẽ quay lại bài đăng này khi có nhu cầu Một trong những nhiệm vụ phổ biến nhất mà bạn thực hiện trong công việc phát triển Python hàng ngày của mình có lẽ là đọc tệp. Khi bạn mở tệp để đọc, có ba chức năng thường được sử dụng
Ví dụ: giả sử chúng ta có một tệp văn bản chứa yellow Hành vi của ba chức năng trên sẽ giống như đọc()with open("test.txt", "r") as f_in: dòng đọc ()with open("test.txt", "r") as f_in: đường đọc ()________số 8_______Tôi khá chắc rằng bạn đã sử dụng tất cả các chức năng trên, nhưng bạn đã bao giờ nghĩ về nguyên tắc đằng sau việc đọc tệp Python chưa? Trước khi chúng tôi đi sâu vào cách làm việc với các tệp trong Python, điều quan trọng là phải hiểu chính xác tệp là gì và cách các hệ điều hành hiện đại xử lý một số khía cạnh của chúng Tập tin là gì?Về cốt lõi, một tệp là một tập hợp các byte liền kề được sử dụng để lưu trữ dữ liệu. Dữ liệu này được sắp xếp theo một định dạng cụ thể và có thể là bất kỳ thứ gì đơn giản như tệp văn bản hoặc phức tạp như tệp nhị phân. Trên hầu hết các hệ thống tệp, tệp bao gồm ba phần chính
Lưu ý Hệ thống Windows và Linux sử dụng các ký tự để kết thúc dòng. Sử dụng “kiểm tra. txt” làm ví dụ, nếu nó được tạo trên hệ thống Windows, nó sẽ giống như yellow\r\n Trên hệ thống Linux yellow\n Đọc tệp kích thước nhỏĐọc một tệp có kích thước nhỏ (<500MB) khá đơn giản, dưới đây là cách thực hiện ba phương pháp đọc()try: dòng đọc ()try: đường đọc ()try: Đọc tệp kích thước lớnMọi thứ bắt đầu trở nên thú vị khi đọc các tệp lớn (>500MB). Bạn cần hết sức lưu ý khi gọi các hàm with open("test.txt", "r") as f_in:5 hoặc with open("test.txt", "r") as f_in:7 vì chúng có ý định tải toàn bộ tệp vào bộ nhớ, nếu không cẩn thận chương trình của bạn sẽ hết bộ nhớ. Hàm with open("test.txt", "r") as f_in:6 vẫn ổn vì nó chỉ đọc một dòng của tệp mỗi lần. Bạn có thể dễ dàng thực hiện nó như sau try: Tuy nhiên, trong trường hợp sử dụng cực đoan, nếu toàn bộ tệp chỉ có một dòng thì sao? with open("test.txt", "r") as f_in:0 Để đọc một tệp lớn một cách an toàn, chúng ta vẫn có thể sử dụng hàm with open("test.txt", "r") as f_in:5, nhưng với tham số là size (số ký tự) with open("test.txt", "r") as f_in:1 Trong đoạn mã trên, chúng ta truyền số nguyên 4096 (4k) làm tham số của hàm with open("test.txt", "r") as f_in:5, nghĩa là đọc 4k ký tự một lúc, cho đến khi không còn dữ liệu. Bằng cách này, ngay cả khi toàn bộ nội dung tệp chỉ chứa một dòng, bạn sẽ không gặp vấn đề về bộ nhớ Làm cách nào để đọc tệp 10gb bằng Python?Cách nhanh nhất của Python để đọc tệp văn bản lớn (vài GB) . # Tập tin. readline-ví dụ-3. py tệp = mở ("mẫu. txt") trong khi 1 dòng = tập tin. đường đọc(100000) nếu không dòng nghỉ cho dòng trong dòng vượt qua # làm gì đó**văn bản mạnh** Làm cách nào để đọc tệp văn bản trong Python?Nếu bạn muốn đọc một tệp văn bản bằng Python, trước tiên bạn phải mở tệp đó. Nếu tệp văn bản và tệp hiện tại của bạn nằm trong cùng một thư mục ("thư mục"), thì bạn chỉ cần tham chiếu tên tệp trong hàm open().
Làm cách nào để phân tích một tệp trong Python?Phân tích cú pháp văn bản ở định dạng phức tạp bằng biểu thức chính quy . Bước 1. Hiểu định dạng đầu vào. 123. . Bước 2. Nhập các gói cần thiết. Chúng ta sẽ cần mô-đun Biểu thức chính quy và gói gấu trúc. . Bước 3. Định nghĩa biểu thức chính quy. . Bước 4. Viết trình phân tích cú pháp dòng. . Bước 5. Viết trình phân tích tệp. . Bước 6. Kiểm tra trình phân tích cú pháp Bạn có thể đọc một tệp trong hàm Python không?Đây là một số hàm trong Python cho phép bạn đọc và ghi vào tệp. đọc() . Hàm này đọc toàn bộ tệp và trả về một chuỗi. dòng đọc (). Hàm này đọc các dòng từ tệp đó và trả về dưới dạng một chuỗi. |