Làm cách nào để tải nhiều tệp văn bản trong python?
Đọc tệp văn bản trong Python tương đối dễ so với hầu hết các ngôn ngữ lập trình khác. Thông thường, chúng ta chỉ sử dụng hàm “open()” ở chế độ đọc hoặc ghi rồi bắt đầu lặp từng dòng của tệp văn bản Đây đã là cách thực hành tốt nhất và nó không thể là cách dễ dàng hơn. Tuy nhiên khi chúng ta muốn đọc nội dung từ nhiều file thì chắc chắn có cách tốt hơn. Đó là, sử dụng mô-đun “Nhập tệp” được tích hợp sẵn trong Python. Nó kết hợp nội dung từ nhiều tệp cho phép chúng tôi xử lý mọi thứ trong một vòng lặp duy nhất và nhiều lợi ích khác Trong bài viết này, tôi sẽ minh họa mô-đun này bằng các ví dụ 0. Không có mô-đun FileInputẢnh của DGlodowska trên PixabayChúng ta hãy xem cách "thông thường" để đọc nhiều tệp văn bản bằng cách sử dụng hàm # Iterate through all file 2. Nhưng trước đó, chúng ta cần tạo hai tệp mẫu cho mục đích trình diễnwith open('my_file1.txt', mode='w') as f: Trong đoạn mã trên, chúng tôi mở một tệp có chế độ # Iterate through all file 3 có nghĩa là “ghi”. Sau đó, chúng tôi viết hai dòng trong tập tin. Xin lưu ý rằng chúng ta cần thêm dòng mới # Iterate through all file 4. Nếu không, hai câu sẽ được viết trong một dòngSau đó, chúng ta sẽ có hai tệp văn bản trong thư mục làm việc hiện tại Bây giờ, giả sử chúng ta muốn đọc từ cả hai tệp văn bản và in từng dòng nội dung. Tất nhiên, chúng ta vẫn có thể làm điều đó bằng cách sử dụng hàm # Iterate through all file 2# Iterate through all file Ở đây chúng ta phải sử dụng hai vòng lặp lồng nhau. Vòng lặp bên ngoài dành cho các tệp, trong khi vòng lặp bên trong dành cho các dòng trong mỗi tệp 1. Sử dụng Mô-đun FileInputẢnh của Free-Photos trên PixabayChà, không có gì ngăn cản chúng ta sử dụng hàm # Iterate through all file 2. Tuy nhiên, mô-đun # Iterate through all file 7 chỉ cung cấp cho chúng ta một cách gọn gàng hơn để đọc nhiều tệp văn bản vào một luồng duy nhấtTrước hết, chúng ta cần nhập mô-đun. Đây là mô-đun tích hợp sẵn của Python nên chúng ta không cần tải xuống bất cứ thứ gì Sau đó, chúng ta có thể sử dụng nó để đọc từ hai tệp with fi.input(files=['my_file1.txt', 'my_file2.txt']) as f: Vì mô-đun # Iterate through all file 7 được thiết kế để đọc từ nhiều tệp nên chúng tôi không cần phải lặp tên tệp nữa. Thay vào đó, hàm # Iterate through all file 9 lấy một loại tập hợp có thể lặp lại, chẳng hạn như danh sách làm tham số. Ngoài ra, điều tuyệt vời là tất cả các dòng từ cả hai tệp đều có thể truy cập được trong một vòng lặp for2. Sử dụng Mô-đun FileInput với GlobẢnh của jarmoluk trên PixabayĐôi khi, có thể không thực tế khi có một danh sách tên tệp như vậy với tất cả các tên được nhập thủ công. Việc đọc tất cả các tệp từ một thư mục là khá phổ biến. Ngoài ra, chúng tôi có thể chỉ quan tâm đến một số loại tệp nhất định Trong trường hợp này, chúng ta có thể sử dụng mô-đun import fileinput as fi 0, một mô-đun tích hợp sẵn khác của Python cùng với mô-đun # Iterate through all file 7Chúng ta có thể làm một thí nghiệm đơn giản trước đó. Mô-đun import fileinput as fi 2 có thể giúp chúng tôi liệt kê tất cả các tệp trong thư mục làm việc hiện tạiCó thể thấy rằng có nhiều tệp khác ngoài hai tệp văn bản. Do đó, chúng tôi muốn lọc tên tệp vì chúng tôi chỉ muốn đọc các tệp văn bản. Chúng ta có thể sử dụng mô-đun import fileinput as fi 0 như sauwith open('my_file1.txt', mode='w') as f:6 Bây giờ, chúng ta có thể đặt hàm import fileinput as fi 4 vào hàm import fileinput as fi 5 làm tham số. Vì vậy, chỉ có hai tệp văn bản này sẽ được đọcwith open('my_file1.txt', mode='w') as f:93. Nhận siêu dữ liệu của tệp Bạn có thể hỏi làm cách nào chúng tôi có thể biết chính xác "dòng" là từ tệp nào khi chúng tôi đang đọc từ luồng thực sự được kết hợp với nhiều tệp? Thật vậy, việc sử dụng hàm # Iterate through all file 2 với vòng lặp lồng nhau dường như rất dễ dàng để lấy thông tin đó vì chúng ta có thể truy cập tên tệp hiện tại từ vòng lặp bên ngoài. Tuy nhiên, điều này thực tế dễ dàng hơn nhiều trong mô-đun # Iterate through all file 7# Iterate through all file 2Hãy xem, trong đoạn mã trên, chúng tôi sử dụng import fileinput as fi 8 để truy cập tệp hiện tại mà import fileinput as fi 9 đến từ đó và with fi.input(files=['my_file1.txt', 'my_file2.txt']) as f: 0 để truy cập chỉ mục hiện tại của dòng mà chúng tôi đang nhận4. Khi con trỏ đến một tệp mớiẢnh của DariuszSankowski trên PixabayNgoài ra, còn có nhiều chức năng hơn từ mô-đun # Iterate through all file 7 mà chúng ta có thể sử dụng. Ví dụ, nếu chúng ta muốn làm gì đó khi đến một tệp mới thì sao?Hàm with fi.input(files=['my_file1.txt', 'my_file2.txt']) as f: 2 giúp chúng tôi quyết định xem chúng tôi có đang đọc dòng đầu tiên từ một tệp mới hay không# Iterate through all file 8Điều này có thể rất hữu ích cho mục đích đăng nhập. Vì vậy, chúng ta có thể được chỉ định với tiến trình hiện tại 5. Chuyển đến tệp tiếp theoẢnh của Free-Photos trên PixabayChúng tôi cũng có thể dễ dàng dừng đọc tệp hiện tại và chuyển sang tệp tiếp theo. Chức năng with fi.input(files=['my_file1.txt', 'my_file2.txt']) as f: 3 cho phép chúng tôi làm như vậyTrước khi chúng tôi có thể demo tính năng này, vui lòng để tôi viết lại hai tệp mẫu # Iterate through all file 0Sự khác biệt duy nhất so với các tệp gốc là tôi đã thêm một dòng văn bản with fi.input(files=['my_file1.txt', 'my_file2.txt']) as f: 4 vào tệp văn bản đầu tiên. Giả sử chúng ta muốn mô-đun # Iterate through all file 7 ngừng đọc tệp đầu tiên và chuyển sang tệp thứ hai khi nó nhìn thấy nội dung như vậy# Iterate through all file 3Trong đoạn mã trên, một điều kiện if khác được thêm vào. Khi văn bản dòng là with fi.input(files=['my_file1.txt', 'my_file2.txt']) as f: 4, nó sẽ chuyển sang tệp tiếp theo. Do đó, chúng ta có thể thấy dòng “1–2” không được đọc và xuấtĐôi khi chúng tôi có thể có các tệp nén để đọc. Thông thường chúng ta sẽ phải giải nén ra mới đọc được nội dung. Tuy nhiên, với module # Iterate through all file 7, chúng ta có thể không phải trích xuất nội dung từ các file nén rồi mới đọc đượcHãy tạo một tệp văn bản nén bằng Gzip. Tập tin này sẽ được sử dụng cho mục đích trình diễn sau này # Iterate through all file 0Trong đoạn mã trên, chúng tôi đã thêm tệp with fi.input(files=['my_file1.txt', 'my_file2.txt']) as f: 8 vào tệp nén bằng gzip. Bây giờ, hãy xem làm thế nào # Iterate through all file 7 có thể đọc nó mà không cần thực hiện thêm các bước giải nén# Iterate through all file 1Bằng cách sử dụng tham số with open('my_file1.txt', mode='w') as f:60 và cờ with open('my_file1.txt', mode='w') as f:61, tệp gzip sẽ được giải nén nhanh chóng Mô-đun # Iterate through all file 7 hiện hỗ trợ gzip và bzip2. Thật không may, không phải định dạng khácBản tóm tắtẢnh của Free-Photos trên PixabayTrong bài viết này, tôi đã giới thiệu mô-đun có sẵn trong Python # Iterate through all file 7 và cách sử dụng nó để đọc nhiều tệp văn bản. Tất nhiên, nó sẽ không bao giờ thay thế hàm # Iterate through all file 2, nhưng về mặt đọc nhiều tệp vào một luồng, tôi tin rằng đó là cách tốt nhấtTham gia Medium với liên kết giới thiệu của tôi — Christopher TaoLà thành viên Phương tiện, một phần phí thành viên của bạn sẽ được chuyển đến các tác giả mà bạn đã đọc và bạn có toàn quyền truy cập vào mọi câu chuyện…vừa phải. com Nếu bạn cảm thấy bài viết của tôi hữu ích, hãy cân nhắc tham gia Medium Membership để ủng hộ tôi và hàng ngàn người viết khác. (Nhấp vào liên kết ở trên) |