Trong hướng dẫn này, bạn sẽ tìm hiểu các đối tượng tệp. Ngoài ra, chúng ta sẽ xem cách sử dụng các phương thức và thuộc tính của đối tượng tệp để thực hiện các thao tác tệp khác nhau
Loạt. Xử lý tệp Python
Mục lục
Đối tượng tệp là gì?
Đối tượng tệp Python cung cấp các phương thức và thuộc tính để truy cập và thao tác tệp. Sử dụng các đối tượng tệp, chúng ta có thể đọc hoặc ghi bất kỳ tệp nào
Bất cứ khi nào chúng ta mở một tệp để thực hiện bất kỳ thao tác nào trên tệp đó, Python sẽ trả về một đối tượng tệp. Để tạo một đối tượng tệp trong Python, hãy sử dụng các hàm có sẵn, chẳng hạn như
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
3 và file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
4Ngoại lệ IOError xuất hiện khi một đối tượng tệp bị lạm dụng hoặc thao tác tệp không thành công vì lý do liên quan đến I/O. Ví dụ: khi bạn cố gắng ghi vào tệp khi tệp được mở ở chế độ chỉ đọc
Các loại đối tượng tệp
Trong Python, có ba loại đối tượng tệp khác nhau, được liệt kê bên dưới
- tệp văn bản
- tập tin nhị phân
- tập tin thô
Tất cả các đối tượng loại tệp được xác định trong mô-đun io
Tệp văn bản [file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
5]
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
Loại tệp văn bản là phổ biến nhất. Thông thường, chúng tôi sử dụng tệp văn bản để lưu trữ dữ liệu ký tự hoặc lưu trữ thông tin ở dạng văn bản thuần túy không có định dạng đặc biệt ngoài phông chữ và kiểu phông chữ cơ bản
Chúng tôi mở một tệp văn bản bằng hàm
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
3. Ví dụ, file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
7. Khi chúng ta mở một tệp văn bản, nó sẽ trả về một đối tượng tệp file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
5Thí dụ
file = open['test.txt', 'w']
print[type[file]]
# Output:
Tệp nhị phân [file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
9 và with open[r'E:\pynative\files\test.txt', "r"] as fp:
print['Is Closed:', fp.closed]
print['Encoding Used:', fp.encoding]
print['Access Mode:', fp.mode]
print['NewLines Found:', fp.newlines]
0]
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
with open[r'E:\pynative\files\test.txt', "r"] as fp:
print['Is Closed:', fp.closed]
print['Encoding Used:', fp.encoding]
print['Access Mode:', fp.mode]
print['NewLines Found:', fp.newlines]
Dữ liệu được lưu trữ trên đĩa ở dạng nhị phân. Ví dụ: chúng tôi sử dụng tệp nhị phân để lưu trữ dữ liệu như hình ảnh hoặc video. Các tệp nhị phân là một dạng lưu trữ dữ liệu có thể đọc được trên máy tính
Cần có một chương trình để giải thích dữ liệu trong tệp nhị phân và hiển thị nó cho người dùng. Các tệp nhị phân còn được gọi là tệp đệm. Loại tệp này được sử dụng để đọc và ghi dữ liệu nhị phân
Mở tệp nhị phân bằng hàm open[] ở chế độ nhị phân. Ví dụ,
with open[r'E:\pynative\files\test.txt', "r"] as fp:
print['Is Closed:', fp.closed]
print['Encoding Used:', fp.encoding]
print['Access Mode:', fp.mode]
print['NewLines Found:', fp.newlines]
1. Nó mở tệp ở chế độ chỉ đọc ở chế độ nhị phân. Con trỏ tệp tồn tại ở đầu tệpHàm
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
3 sẽ trả về file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
9 khi chúng ta mở tệp nhị phân để đọc và đối tượng tệp with open[r'E:\pynative\files\test.txt', "r"] as fp:
print['Is Closed:', fp.closed]
print['Encoding Used:', fp.encoding]
print['Access Mode:', fp.mode]
print['NewLines Found:', fp.newlines]
0 khi chúng ta mở tệp nhị phân để ghiThí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
Tệp thô
Tệp thô là tập hợp dữ liệu chưa được xử lý. Nó có nghĩa là tệp thô không bị máy tính thay đổi hoặc thao tác dưới bất kỳ hình thức nào
Các tệp thô còn được gọi là tệp không có bộ đệm và loại tệp này thường được sử dụng làm khối xây dựng cấp thấp cho các luồng văn bản và nhị phân. Hầu hết, các tập tin thô không được sử dụng
Khi chúng ta mở các tệp này, sử dụng hàm
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
3 sẽ trả về một đối tượng with open[r'E:\pynative\files\test.txt', "r"] as fp:
print['Is Closed:', fp.closed]
print['Encoding Used:', fp.encoding]
print['Access Mode:', fp.mode]
print['NewLines Found:', fp.newlines]
6Thí dụ
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
Thuộc tính đối tượng tệp
Đối tượng tệp có các thuộc tính sau mà chúng ta có thể sử dụng để truy cập các chi tiết khác nhau của tệp, chẳng hạn như tên tệp và tệp được mở ở chế độ nào
7. Trả về tên của tập tin. Đây là thuộc tính chỉ đọc và có thể không có trên tất cả các đối tượng giống như tệp. Nếu đối tượng tệp được tạo bằng hàmwith open[r'E:\pynative\files\test.txt', "r"] as fp: print['Is Closed:', fp.closed] print['Encoding Used:', fp.encoding] print['Access Mode:', fp.mode] print['NewLines Found:', fp.newlines]
3, tên của tệp sẽ được trả về. Mặt khác, một số chuỗi cho biết nguồn của đối tượng tệp được trả vềfile = open['test.txt', 'rb', buffering=0] print[type[file]] # Output:
9. Nó trả về mã hóa mà tệp này sử dụng, chẳng hạn như UTF-8. Thuộc tính này là chỉ đọc. Khi các chuỗi Unicode được ghi vào một tệp, chúng sẽ được chuyển đổi thành các chuỗi byte bằng mã hóa này. Nó cũng có thể là Không. Trong trường hợp đó, tệp sử dụng mã hóa mặc định của hệ thống để chuyển đổi chuỗi Unicodewith open[r'E:\pynative\files\test.txt', "r"] as fp: print['Is Closed:', fp.closed] print['Encoding Used:', fp.encoding] print['Access Mode:', fp.mode] print['NewLines Found:', fp.newlines]
0. Trả về chế độ truy cập tệp được sử dụng khi mở tệpfile_object.read[size]
1. Trả về True nếu tệp bị đóng. Đó là một giá trị boolean cho biết trạng thái hiện tại của đối tượng tệpfile_object.read[size]
2. Các tệp được mở ở chế độ đọc dòng mới phổ quát theo dõi các dòng mới gặp phải khi đọc tệp. Các giá trị là ‘\r’, ‘\n’, ‘\r\n’, Không có [chưa đọc dòng mới nào] hoặc một bộ chứa tất cả các loại dòng mới đã thấy. Đối với các tệp không được mở ở chế độ đọc xuống dòng chung, giá trị của thuộc tính này sẽ làfile_object.read[size]
3file_object.read[size]
Thí dụ
________số 8_______Phương thức đối tượng tệp
Đối tượng tệp có các phương thức sau mà chúng ta có thể sử dụng để truy cập tệp. Một tệp có thể được mở bằng chức năng tích hợp có tên là
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
3. Hàm này lấy đường dẫn của tệp và chế độ truy cập và trả về một đối tượng tệpĐọc thêm
- Mở tệp bằng Python
- Tạo một tệp trong Python
file_object.read[size]
5Trả về nội dung tệp. file_object.read[size]
6Trả về xem luồng tệp có thể được đọc hay không. file_object.read[size]
7Đọc một dòngfile_object.read[size]
8Đọc tệp thành một danh sáchfile_object.read[size]
9Thay đổi kích thước tệp thành một kích thước được chỉ định. # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
0Trả về liệu tệp có thể được ghi vào hay không. # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
1Ghi chuỗi đã chỉ định vào tệp. # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
2Ghi danh sách các chuỗi vào tệp. # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
3Đóng tệp đã mở. # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
4Đặt vị trí con trỏ tệp trong tệp# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
5Trả về tệp có cho phép chúng ta thay đổi vị trí tệp hay không. # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
6Trả về vị trí tệp hiện tại. # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
7Trả về luồng thô đã tách từ bộ đệm# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
8Trả về một số đại diện cho luồng, theo quan điểm của hệ điều hành. # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
9Xả bộ đệm bên trong. My First Line My Second Line My Third Line0Trả về luồng tệp có tương tác hay không. Phương thức đối tượng tệp
Hãy xem từng phương pháp một
file_object.read[size]
5 Phương pháp
file_object.read[size]
cú pháp
file_object.read[size]
My First Line My Second Line My Third Line
2 đại diện cho số byte để đọc từ một tệp. Nó trả về nội dung tệp trong một đối tượng chuỗi- Nếu
My First Line My Second Line My Third Line
2 không được chỉ định, nó sẽ đọc tất cả nội dung từ một tệp - Nếu đối số kích thước là âm hoặc không được chỉ định, hãy đọc tất cả dữ liệu cho đến khi đạt đến EOF
- Một chuỗi rỗng được trả về khi gặp phải EOF ngay lập tức
- Khi được sử dụng ở chế độ không chặn, có thể trả về ít dữ liệu hơn yêu cầu, ngay cả khi không có tham số kích thước nào được cung cấp
Thí dụ
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
đầu ra
My First Line My Second Line My Third Line
Đọc thêm
- Hướng dẫn đầy đủ về cách đọc tệp trong Python
- Đọc các dòng cụ thể từ một tệp trong Python
file_object.read[size]
7 Phương pháp
file_object.read[size]
cú pháp
file_object.readline[size]
- Đọc một dòng từ một tập tin tại một thời điểm. Nó trả về dòng ở định dạng chuỗi
- Nếu
My First Line My Second Line My Third Line
2 được cung cấp, nó sẽ đọc số byte [bao gồm cả dòng mới ở cuối] từ một tệp - Nếu đối số kích thước là âm hoặc không được chỉ định, nó sẽ đọc một dòng
- Một chuỗi rỗng được trả về khi gặp phải EOF ngay lập tức
Thí dụ
# readline[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read single line
print[fp.readline[]]
# read next line
print[fp.readline[]]
đầu ra
My First Line My Second Line
file_object.read[size]
8 Phương pháp
file_object.read[size]
cú pháp
file = open['test.txt', 'rb']
print[type[file]]
# Output:
0- Đọc tất cả các dòng từ một tệp và trả lại chúng dưới dạng đối tượng danh sách
- Nếu có đối số
My First Line My Second Line My Third Line
7, thay vì đọc toàn bộ tệp, toàn bộ dòng có tổng xấp xỉ byte gợi ý kích thước [có thể sau khi làm tròn thành kích thước bộ đệm bên trong] được đọc
Thí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
1đầu ra
file = open['test.txt', 'rb']
print[type[file]]
# Output:
2có thể đọc được []
Nó kiểm tra xem luồng tệp có thể được đọc hay không
Thí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
3file_object.read[size]
9 Phương pháp
file_object.read[size]
Sử dụng phương thức truncate[] để làm trống tệp
- Nếu có đối số kích thước tùy chọn, tệp sẽ bị cắt bớt [tối đa] kích thước đó. Vì vậy, ví dụ: nếu bạn chỉ định 10 byte, truncate[] sẽ xóa 10 byte đầu tiên khỏi tệp
- Kích thước mặc định cho vị trí hiện tại của con trỏ tệp
- Vị trí tệp hiện tại không bị thay đổi. Lưu ý rằng nếu một kích thước được chỉ định vượt quá kích thước hiện tại của tệp, kết quả sẽ phụ thuộc vào nền tảng. các khả năng bao gồm tệp có thể không thay đổi, tăng đến kích thước đã chỉ định như thể không được lấp đầy hoặc tăng đến kích thước đã chỉ định với nội dung mới không xác định. khả dụng. Windows, nhiều biến thể Unix
Thí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
4# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
1 Phương pháp
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
Viết một chuỗi vào tập tin. Nếu bộ đệm được sử dụng, dòng có thể không hiển thị trong tệp cho đến khi phương thức flush[] hoặc close[] được gọi
Thí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
5Đọc thêm. Hướng dẫn đầy đủ về cách ghi vào tệp trong Python
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
2 Phương pháp
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
- Viết một danh sách các chuỗi vào tập tin. Sử dụng để viết nhiều dòng cùng một lúc vào một tệp. Bạn có thể viết bất kỳ đối tượng lặp nào tạo chuỗi, thường là danh sách chuỗi
- Ghi chú.
2 không thêm dấu phân cách dòng# read[size] with open[r'E:\pynative\files\test.txt', 'r'] as fp: # read 14 bytes # fp is file object print[fp.read[14]] # read all remaining content print[fp.read[]]
Thí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
6# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
0 Phương pháp
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
Nó kiểm tra xem tệp có thể được ghi vào hay không
Thí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
7# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
3 Phương pháp
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
Đóng tệp đã mở. Một tệp đã đóng không thể đọc hoặc ghi được nữa.
file_object.readline[size]
4 sẽ tăng lên nếu bạn cố đọc hoặc ghi một tệp đã đóngThí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
8Ghi chú. Bạn nên mở một tệp bằng cách sử dụng câu lệnh
file_object.readline[size]
5. Nó tự động đóng tệp và đảm bảo rằng tất cả các tài nguyên được liên kết với tệp được giải phóngPhương pháp # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
4 và # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
6
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
Hàm
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
4 đặt vị trí của con trỏ tệp và hàm # read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
6 trả về vị trí hiện tại của con trỏ tệpThí dụ
file = open['test.txt', 'rb']
print[type[file]]
# Output:
9Đọc thêm. Hướng dẫn đầy đủ Tìm kiếm tệp Python []. Di chuyển vị trí con trỏ tệp
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
8 Phương pháp
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
Trả về bộ mô tả tệp số nguyên được sử dụng bởi hệ thống triển khai bên dưới để yêu cầu các thao tác I/O từ hệ điều hành. Điều này có thể hữu ích cho các giao diện cấp thấp khác sử dụng bộ mô tả tệp, chẳng hạn như
# readline[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read single line
print[fp.readline[]]
# read next line
print[fp.readline[]]
1Thí dụ
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
0# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
9 Phương pháp
# read[size]
with open[r'E:\pynative\files\test.txt', 'r'] as fp:
# read 14 bytes
# fp is file object
print[fp.read[14]]
# read all remaining content
print[fp.read[]]
Như tên cho thấy, nó xóa bộ đệm bên trong. Khi bộ đệm được sử dụng và nếu bạn đang ghi vào một tệp. dòng có thể không hiển thị trong tệp cho đến khi phương thức flush[] hoặc close[] được gọi
Thí dụ
file = open['test.txt', 'rb', buffering=0]
print[type[file]]
# Output:
1My First Line
My Second Line
My Third Line
0 Phương pháp
Trả về Đúng nếu tệp được kết nối với thiết bị TTY như máy in từ xa, nếu không thì Sai. Nó cho bạn biết liệu luồng tệp có tương tác hay không