Để làm việc với dữ liệu được lưu trữ, xử lý tệp thuộc về kiến ​​thức cốt lõi của mọi lập trình viên Python chuyên nghiệp. Ngay từ bản phát hành đầu tiên, cả đọc và …

Bạn đang xem: đọc tệp bằng python

Để làm việc với dữ liệu được lưu trữ, việc xử lý tệp thuộc về cốt lõi kiến thức của mọi lập trình viên Python chuyên nghiệp. Ngay từ bản phát hành sớm nhất, cả việc đọc và ghi dữ liệu vào tệp đều là các tính năng được tích hợp sẵn của Python. So với các ngôn ngữ lập trình khác như C hoặc Java, nó khá đơn giản và chỉ yêu cầu một vài dòng mã. Hơn nữa, không cần tải thêm mô-đun nào để làm điều đó đúng cách.

Khái niệm cơ bản về tệp trong Python

Các phương pháp phổ biến để thao tác với tệp là open () để mở tệp, seek () để đặt vị trí hiện tại của tệp ở độ lệch đã cho và close () để đóng đối tượng tệp khi bạn sử dụng xong. Phương thức open () trả về một trình xử lý tệp đại diện cho một đối tượng tệp được sử dụng để truy cập tệp để đọc, ghi hoặc thêm vào.

Khi mở tệp để đọc, Python cần biết chính xác cách tệp sẽ được mở bằng hệ thống. Hai chế độ truy cập có sẵn – đọc và đọc ở chế độ nhị phân. Các cờ tương ứng được sử dụng là r rb , và phải được chỉ định khi mở tệp bằng phương thức open () tích hợp sẵn. Chế độ đầu tiên bao gồm việc giải thích các ký tự đặc biệt như “CR” (ký tự xuống dòng) và “LF” (dòng cấp dữ liệu) để biểu thị ngắt dòng, trong khi chế độ nhị phân cho phép bạn đọc dữ liệu ở chế độ thô – nơi dữ liệu được lưu trữ dưới dạng mà không cần giải thích thêm.

Khi bạn đã mở một tệp, phương thức open () sẽ trả về một đối tượng tệp cho bạn. Các đối tượng tệp này có các phương thức như read () , readline () , write () , tell () , và seek () . Mặc dù một số đối tượng tệp (hoặc các đối tượng giống tệp) có nhiều phương thức hơn những phương thức được liệt kê ở đây, nhưng đây là những phương thức phổ biến nhất. Không phải tất cả các đối tượng tệp đều cần triển khai tất cả các phương thức tệp.

Ví dụ

Trong bài viết này, chúng tôi sẽ giải thích cách đọc tệp bằng Python thông qua các ví dụ. Một số ví dụ bao gồm đọc từng dòng một tệp, dưới dạng một đoạn (một số dòng được xác định tại một thời điểm) và đọc một tệp trong một lần. Ngoài ra, chúng tôi sẽ chỉ cho bạn một cách để chỉ đọc một dòng cụ thể từ tệp mà không cần tìm kiếm toàn bộ tệp.

Ví dụ đầu tiên được lấy cảm hứng từ hai ngôn ngữ lập trình C và C ++. Việc này khá đơn giản, mở tệp bằng phương thức open () , đọc từng dòng của tệp bằng phương thức readline () và xuất dòng ngay sau khi đọc. Ở đây được sử dụng là vòng lặp while liên tục đọc từ tệp miễn là phương thức readline () tiếp tục trả về dữ liệu. Trong trường hợp đến cuối tệp (EOF), vòng lặp while dừng lại và đối tượng tệp bị đóng, giải phóng tài nguyên cho các chương trình khác sử dụng.

 
filename = 

"test.txt"

filehandle =

mở

(tên tệp,

'r'

)

while

Đúng

: line = filehandle.readline ()

nếu

không

dòng:

ngắt

in (dòng) filehandle.close ()

Danh sách 1

Xem Thêm  Làm thế nào để chúng tôi làm cho chuỗi so sánh của tôi không phân biệt chữ hoa chữ thường trong java? - làm thế nào để làm cho java không phân biệt chữ hoa chữ thường

Như bạn có thể đã lưu ý trong Liệt kê 1, chúng tôi đã mở và đóng tệp một cách rõ ràng (dòng 5 và 14, tương ứng). Mặc dù trình thông dịch Python tự động đóng các tệp đã mở khi kết thúc quá trình thực thi chương trình Python, nhưng việc đóng tệp một cách rõ ràng qua close () là kiểu lập trình tốt và không nên quên.

Như một sự cải tiến, trong Python 2.3, giao thức trình lặp thuận tiện đã được giới thiệu. Điều này cho phép bạn đơn giản hóa vòng lặp readline như sau:

 
filename = 

"test.txt"

cho

line

in

open

(tên tệp, < p class = "hljs-string"> 'r'

): in (dòng)

Liệt kê 2

Được sử dụng ở đây là vòng lặp for kết hợp với trình lặp in . Tệp được mở ở dòng 4 của Liệt kê 2. Dòng hiện tại được xác định với sự trợ giúp của trình lặp in , được đọc từ tệp và nội dung của nó được xuất ra stdout in line 5. Python bao gồm việc mở và đóng tệp cho bạn khi nó nằm ngoài phạm vi. Mặc dù không hiệu quả nhưng điều này cho phép bạn không phải xử lý tệp tin nữa.

Thật không may, mã ở trên ít rõ ràng hơn và dựa vào bộ sưu tập rác nội bộ của Python để xử lý việc đóng tệp. Được giới thiệu trong Python 2.5, lệnh with đóng gói toàn bộ quá trình nhiều hơn, đồng thời cũng xử lý việc mở và đóng tệp chỉ một lần trong suốt khối mã phạm vi. Liệt kê 3 cho thấy cách sử dụng lệnh with .

 
filename = 

"test.txt"

với

open

(filename,

'r'

)

as

filehandle:

cho

dòng

trong

filehandle: in (dòng)

Liệt kê 3

Sự kết hợp của câu lệnh with và lệnh open () chỉ mở tệp một lần (dòng 4). Nếu thành công, vòng lặp for được thực thi và nội dung của dòng được in trên stdout (dòng 5 và 6).

Hơn nữa, việc sử dụng câu lệnh with có một tác dụng phụ. Bên trong, trình thông dịch Python tạo một -block try cuối cùng để đóng gói việc đọc từ tệp. Liệt kê 4 cho thấy những gì về cơ bản đang xảy ra bên trong Python với các khối mã với :

  

thử

: filehandle =

mở

(tên tệp,

'r'

)

cuối cùng

: filehandle.close ()

Liệt kê 4

Đọc tệp dưới dạng các đoạn dòng

Cho đến nay, chúng tôi đã xử lý từng dòng một tệp. Điều này khá chậm đối với các tệp lớn và có thể được cải thiện bằng cách đọc nhiều dòng cùng một lúc. Để đạt được điều đó, phương thức islice () từ mô-đun itertools đi vào hoạt động. Ngoài ra, nó hoạt động như một trình lặp và trả về một đoạn dữ liệu bao gồm n dòng. Ở cuối tệp, kết quả có thể ngắn hơn và cuối cùng lệnh gọi sẽ trả về một danh sách trống.

  

từ

itertools

nhập

islice filename =

"test.txt"

number_of_lines =

5

với

open

(filename,

'r'

)

as

input_file: lines_cache = islice (input_file, number_of_lines)

cho

current_line

trong

lines_cache:

print

(current_line)

Liệt kê 5

Xem Thêm  Sử dụng ngày hết hạn trong JavaScript để tạo dữ liệu tự hủy - ngày hết hạn 1 ano javascript

Đọc một dòng cụ thể từ một tệp

Sử dụng các phương pháp được hiển thị ở trên, chúng tôi cũng có thể thực hiện các hành động hữu ích khác, chẳng hạn như đọc một dòng cụ thể từ tệp. Để làm điều này, chúng tôi sử dụng bộ đếm và in dòng thích hợp khi chúng tôi đến nó trong khi duyệt qua tệp.

 
filename = 

"test.txt"

line_number =

3

print

(

"line% i of% s is:"

% (line_number, filename))

với

open

(filename,

'r'

)

as

filehandle: current_line =

1

cho

dòng

trong

filehandle:

nếu

current_line == line_number: in (dòng)

ngắt

current_line + =

1

Sách điện tử miễn phí: Git Essentials

Kiểm tra đưa ra hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Hãy dừng các lệnh của Google Git và thực sự học nó!

Liệt kê 6

Liệt kê 6 phải đơn giản để hiểu, nhưng nó dài hơn một chút so với các ví dụ trước. Nó có thể được rút ngắn bằng cách sử dụng mô-đun linecache . Liệt kê 7 cho thấy cách đơn giản hóa mã bằng phương thức getline () . Nếu số dòng được yêu cầu nằm ngoài phạm vi các dòng hợp lệ trong tệp, thì phương thức getline () sẽ trả về một chuỗi trống.

 

nhập

bộ nhớ đệm filename =

"test.txt"

line_number =

3

line = linecache.getline (tên tệp, line_number)

print

(

"line% i of% s:"

% (line_number, filename))

print

(line)

Liệt kê 7

Đọc toàn bộ tệp cùng lúc

Cuối cùng nhưng không kém phần quan trọng, chúng ta sẽ xem xét một trường hợp rất khác so với ví dụ trước – đọc toàn bộ tệp trong một lần. Hãy nhớ rằng trong hầu hết các trường hợp, bạn phải có đủ dung lượng trên máy tính để đọc toàn bộ tệp trong bộ nhớ. Liệt kê 8 sử dụng kết hợp câu lệnh with và phương thức read () . Trong trường hợp này, chúng tôi sẽ sử dụng read () để tải nội dung tệp dưới dạng một luồng dữ liệu.

 
filename = 

"test.txt"

với

open

(filename,

'r'

)

as

filehandle: filecontent = filehandle.read ()

print

(filecontent)

Liệt kê 8

Python cũng cung cấp phương thức readlines () , tương tự như phương thức readline () từ ví dụ đầu tiên. Ngược lại với read () , nội dung tệp được lưu trữ trong danh sách, trong đó mỗi dòng của nội dung là một mục. Liệt kê 9 cho thấy cách truy cập dữ liệu đó:

 
filename = 

"test.txt"

với

open

(filename,

'r'

)

as

filehandle: filecontent = filehandle.readlines ()

cho

dòng

trong

filecontent:

print

(line)

Liệt kê 9

Trong khi readlines () sẽ đọc nội dung từ tệp cho đến khi nó chạm vào EOF, hãy nhớ rằng bạn cũng có thể giới hạn số lượng nội dung được đọc bằng cách cung cấp thông số sizehint , là số byte để đọc.

Kết luận

Như thường lệ, có nhiều cách để đọc nội dung của tệp. Xét về tốc độ, tất cả chúng đều hơn hoặc kém nhau. Còn giải pháp nào phù hợp nhất với bạn thì tùy thuộc vào trường hợp sử dụng cụ thể của bạn. Chúng tôi nghĩ rằng việc xem điều gì có thể xảy ra và sau đó chọn giải pháp phù hợp nhất là điều khá hữu ích.

Xem Thêm  Sửa Lỗi Excel Không Nhảy Công Thức Trong Excel Không Chạy, Sửa Lỗi Excel Không Tự Nhảy Công Thức - thêm dấu nháy đơn trong excel

Mặc dù Python đơn giản hóa đáng kể quá trình đọc tệp, nhưng đôi khi nó vẫn có thể trở nên phức tạp, trong trường hợp đó, tôi khuyên bạn nên xem tài liệu Python chính thức để biết thêm thông tin.

Tài nguyên

  • Cách đọc tệp đúng cách bằng Python, https://www.smallsurething.com/how-to-read-a-file-properly-in-python /
  • Xử lý các tệp lớn bằng python, http://www.blopig.com/blog/2016/08/processing-large-files-using-python/
  • Mô-đun itertools Python, https://docs.python.org/3.6/library/itertools.html
  • Mô-đun bộ đệm dòng Python, https://docs.python.org/3.6/library/linecache.html

Lời cảm ơn

Tác giả xin chân thành cảm ơn Zoleka Hatitongwe đã hỗ trợ cô trong quá trình chuẩn bị bài viết.


Xem thêm những thông tin liên quan đến chủ đề đọc tệp bằng python

Hướng dẫn đọc và ghi tệp trong Python từ A-Z

  • Tác giả: Gà Python
  • Ngày đăng: 2021-11-28
  • Đánh giá: 4 ⭐ ( 6343 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn đọc và ghi tệp trong Python từ A-Z

Đọc và ghi text file trong python qua ví dụ cụ thể » Cafedev.vn

  • Tác giả: cafedev.vn
  • Đánh giá: 3 ⭐ ( 5489 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Python cung cấp các hàm có sẵn để tạo, viết và đọc tệp. Có hai loại tệp có thể được xử lý trong python, tệp văn bản bình thường và tệp nhị phân (được viết bằng ngôn ngữ nhị phân, 0s và 1s).

Đọc file trong python

  • Tác giả: laptrinhcanban.com
  • Đánh giá: 4 ⭐ ( 4493 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn cách xử lý file trong Python. Bạn sẽ biết cách đọc file trong python bằng mode r trong python, với các phương pháp như đọc toàn bộ file trong python hoặc đọc từng dòng file txt trong Python

Tìm hiểu và làm việc với File trong Python

  • Tác giả: t3h.edu.vn
  • Đánh giá: 3 ⭐ ( 3867 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài viết này, bạn sẽ tìm hiểu nơi có thể lưu trữ, truy xuất cũng như thao tác với các file như cách đọc file, ghi file, … trong Python.

Xử lý file trong Python

  • Tác giả: howkteam.vn
  • Đánh giá: 5 ⭐ ( 8234 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Xử lý file trong Python

Tệp CSV Python: Đọc và Viết

  • Tác giả: helpex.vn
  • Đánh giá: 4 ⭐ ( 7865 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Python có một thư viện lớn các mô-đun đi kèm với phân phối của nó. Mô-đun csv cung cấp cho lập trình viên Python khả năng phân tích các tệp CSV (Giá trị phân tách bằng dấu phẩy). Tệp CSV là…

Chi tiết bài học 17.Xử lý tệp Python

  • Tác giả: vimentor.com
  • Đánh giá: 5 ⭐ ( 9885 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Vimentor chi tiết bài học Xử lý tệp Python: Tạo, mở, ghi tiếp, đọc, ghi

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php