Khi đọc một tệp văn bản, đôi khi chúng ta cần lấy văn bản từng dòng một. Bài viết này sẽ thảo luận về một số công cụ mà Python cung cấp để giúp tạo điều kiện thuận lợi cho việc đọc tệp, từng dòng một. Trong bài viết này, chúng tôi sẽ đề cập
- Làm cách nào để đọc từng dòng tệp trong Python?
- Sử dụng với câu lệnh open[]
- Sử dụng phương thức readlines[]
- Sử dụng Mô-đun fileinput cho các tệp lớn
- Sử dụng cho vòng lặp
- Sử dụng Vòng lặp While
- câu hỏi thường gặp
Làm cách nào để đọc từng dòng tệp trong Python?
Để đọc từng dòng tệp trong Python, chúng ta có thể sử dụng một số phương pháp, nhưng bước đầu tiên trong tất cả các phương pháp là mở tệp bằng hàm open[]. Hãy xem xét ngắn gọn cách thức hoạt động của chức năng mở này
Chức năng mở
- Chúng ta có thể chỉ cần mở một tệp ở bất kỳ chế độ cụ thể nào bằng cú pháp sau
mở ["đường dẫn tệp", "chế độ"]
- Thí dụ. Mở tệp văn bản ở chế độ đọc
open["Tài liệu\\kiểm tra. txt", "r"]
- Hàm open mở tệp mong muốn và trả về dưới dạng đối tượng tệp. Nó có thể mở tệp ở nhiều chế độ khác nhau mà chúng ta có thể tùy ý chỉ định bằng cách sử dụng các ký tự sau.
t
Mặc định, chế độ văn bản
r
Chế độ đọc
w
chế độ ghi
+
Chế độ cập nhật. chế độ đọc + ghi
x
Tạo tệp, trả về lỗi nếu tệp tồn tại
a
Chế độ ghi, nội dung sẽ được thêm vào cuối, tạo tệp nếu nó không tồn tại
b
Chế độ nhị phân
rb
Đọc chế độ nhị phân
wb
Viết chế độ nhị phân
- Hàm mở lấy đường dẫn hệ thống của tệp văn bản phù hợp trong thư mục mà chúng tôi đang chạy mã từ đó và nếu chúng tôi muốn mở tệp cụ thể ở chế độ đọc, chúng tôi thêm "r" để chỉ định điều đó
- Ví dụ: nếu bạn đang ở trong C. \Users\91675 khi chúng tôi đang chạy mã python này khi tệp văn bản của chúng tôi có tại C. \Users\91675\Documents\test. txt, đường dẫn hiển thị trong ví dụ trên là đủ. Sẽ hữu ích nếu cung cấp đường dẫn tệp đầy đủ nếu bạn không chắc chắn về các thư mục và đường dẫn hiện tại. Như bạn có thể thấy, dấu gạch chéo ngược kép là bắt buộc trong những trường hợp như vậy vì \t nếu không sẽ hoạt động như một ký tự thoát [tab]. Dấu gạch chéo lên thay vì dấu gạch chéo kép cũng sẽ hoạt động
Xử lý ngoại lệ
Nếu không tìm thấy tệp trong đường dẫn hệ thống được đề cập, chúng tôi sẽ nhận được một ngoại lệ FileNotFoundError. Chúng ta cần xử lý ngoại lệ này, chúng ta có thể thực hiện theo cách sau
cố gắng
open["Tài liệu\\test2. txt", "r"]
ngoại trừ FileNotFoundError là not_found
print["Tên tập tin hoặc đường dẫn không chính xác"]
Bây giờ chúng ta đã biết cách mở tệp của bạn để đọc, chúng ta hãy xem xét một số cách để đọc từng dòng một
Sử dụng câu lệnh “with open[]”
Một cách để đọc từng dòng tệp trong Python là sử dụng câu lệnh with open[]. Từ khóa “with” tự động đóng tệp sau khi thực thi thành công. Chúng ta đã biết về chức năng mở. Khi chúng tôi mở tệp, chúng tôi có thể sử dụng vòng lặp for để lặp qua tệp theo từng dòng và in từng dòng như được hiển thị
với open["Documents\\test. txt", "r"] dưới dạng tệp
cho dòng trong tập tin
in [dòng]
Sử dụng phương thức readlines[]
Một cách khác để đọc từng dòng tệp trong Python là sử dụng hàm readlines[], hàm này lấy tệp văn bản làm đầu vào và lưu trữ từng dòng riêng lẻ dưới dạng một thành phần trong danh sách. Chúng ta có thể đọc một tệp vào một danh sách hoặc một mảng bằng phương thức readlines[] như được hiển thị.
#Vào danh sách
openFile = open["Documents\\test. txt","r"]
asList = openFile. đường đọc []
in [dưới dạng Danh sách]
mở tập tin. Thoát[]
#Vào một mảng
asArray = []
với open["Documents\\test. txt", "r"] dưới dạng tệp
asArray = tập tin. đường đọc []
in [asArray]
Chúng tôi cũng có thể đề cập đến kích thước của dòng mà chúng tôi muốn đọc bên trong đường đọc dưới dạng đường đọc [độ dài] và nó sẽ chỉ đọc dòng cho đến độ dài mong muốn
#đề cập đến kích thước
openFile = open["Documents\\test. txt","r"]
asList = openFile. đường đọc[15]
in [dưới dạng Danh sách]
mở tập tin. Thoát[]
Vì vậy, nếu tệp openFile chứa một địa chỉ trong một vài dòng, điều này sẽ chỉ trả về 0 đến 15 ký tự của dòng đầu tiên của địa chỉ. Nếu dòng đầu tiên có nhiều ký tự hơn giới hạn quy định, nó sẽ không trả về dòng địa chỉ 2. Đó là bởi vì chúng ta đã giới hạn độ dài mà phương thức readlines[] cần đọc.
Nếu dòng đầu tiên chứa ít ký tự hơn số lượng chúng tôi đã chỉ định, chức năng này sẽ tiếp tục đọc các dòng cho đến khi tổng kích thước của các dòng được đọc cho đến nay không vượt quá giới hạn chúng tôi đã đặt. Ví dụ: nếu chúng tôi có ba dòng chứa bốn ký tự mỗi dòng và chúng tôi chỉ định giới hạn là 6, thì hai dòng đầu tiên sẽ được đọc
Sử dụng vòng lặp “for”
Như chúng ta đã thấy trong ví dụ về câu lệnh with open[], vì hàm open trả về một iterable, nên chúng ta có thể lặp qua tệp theo từng dòng. Trong trường hợp này, chúng ta sẽ chỉ sử dụng vòng lặp for và không sử dụng với câu lệnh open[]. Chúng tôi sẽ mở tệp, lặp qua nó và đóng riêng tệp như được hiển thị.
openFile = open["Documents\\test. txt","r"]
cho dòng trong openFile
in [dòng]
mở tập tin. Thoát[]
Sử dụng vòng lặp “trong khi”
Chúng ta cũng có thể sử dụng vòng lặp while để đọc từng dòng tệp bằng cách sử dụng hàm readline[] bên trong nó, hàm này đọc tệp văn bản theo từng dòng và trả về tất cả các dòng dưới dạng chuỗi.
openFile = open["Documents\\test. txt","r"]
trong khi mở File
dòng = openFile. dòng đọc []
in [dòng]
nếu dòng == ""
nghỉ
mở tập tin. Thoát[]
Khi đọc xong tất cả các dòng, readLine trả về một chuỗi rỗng. Đó là lý do tại sao ở đây chúng ta ngắt vòng lặp while khi đọc một chuỗi rỗng
Sử dụng Mô-đun fileinput cho các tệp lớn
Vì phương thức readlines[] hoạt động bằng cách tải toàn bộ tệp vào bộ nhớ và sau đó lặp lại nó, nếu tệp đủ lớn, việc sử dụng phương thức readlines[] có thể dẫn đến MemoryError. Đối với những trường hợp như vậy, chúng ta có thể sử dụng phương thức input[] trong mô-đun fileinput, phương thức này đọc từng dòng nhưng không lưu các dòng trong bộ nhớ sau khi đọc xong. Chúng tôi cũng có thể sử dụng phương thức vòng lặp for và while ở đây vì chúng tôi đang đọc từng dòng một và không lưu trữ tất cả dữ liệu
nhập tập tin đầu vào
cho dòng trong fileinput. đầu vào [["Tài liệu\\kiểm tra. txt"]]
in [dòng]
câu hỏi thường gặp
Câu hỏi 1. Chúng ta có phải thêm dấu phẩy để biểu thị chức năng mở có hai tham số nếu chúng ta không đề cập đến chế độ bên trong nó không?
Không, không cần thiết phải đề cập đến chế độ cũng như không cần thiết phải thêm dấu phẩy để chỉ ra rằng nó có hai tham số. Mặc dù chúng tôi có thể thêm một số hoặc tất cả những thứ này và nó sẽ hoạt động tốt. Tất cả ba phiên bản này sẽ chạy tốt
openFile = open["Documents\\test. txt","r"]
openFile = open["Documents\\test. txt"]
openFile = open["Documents\\test. txt"]
Câu hỏi 2. Sự khác biệt giữa các phương thức read[], readline[] và readlines[] là gì?
Mặc dù chúng tôi sử dụng cả ba để đọc tệp văn bản, nhưng có một sự khác biệt trong cách chúng hoạt động để đạt được mục tiêu đó
Phương thức đọc []
Phương thức readlines[]
Phương thức readline[]
Đọc toàn bộ văn bản của tệp thành một chuỗi
Đọc tất cả các dòng trong một tệp và trả về danh sách các chuỗi chứa các dòng đã đọc làm phần tử
Đọc từng dòng tệp và trả về tất cả các dòng dưới dạng chuỗi
đề xuất đọc
Bạn có phải là kỹ sư phần mềm đang tìm kiếm các câu hỏi phỏng vấn mã hóa để hỗ trợ chuẩn bị cho cuộc phỏng vấn của mình không?
Bạn đã sẵn sàng để hoàn thành cuộc phỏng vấn viết mã tiếp theo của mình chưa?
Cho dù bạn là Kỹ sư viết mã đang nhắm đến các vai trò Nhà phát triển phần mềm hay Kỹ sư phần mềm hay bạn đang nhắm mục tiêu các vị trí quản lý tại các công ty hàng đầu, IK đều cung cấp các khóa học được thiết kế riêng cho nhu cầu của bạn để giúp bạn chuẩn bị cho cuộc phỏng vấn kỹ thuật
Nếu bạn đang tìm kiếm hướng dẫn và trợ giúp để bắt đầu, hãy đăng ký hội thảo trên web miễn phí của chúng tôi. Là những người tiên phong trong lĩnh vực chuẩn bị phỏng vấn kỹ thuật, chúng tôi đã đào tạo hàng ngàn Kỹ sư phần mềm để vượt qua các cuộc phỏng vấn mã hóa khó khăn nhất và tìm được việc làm tại các công ty mơ ước của họ, chẳng hạn như Google, Facebook, Apple, Netflix, Amazon, v.v.