Tệp và đối tượng tệp trong python là gì?

Python có sẵn một tập hợp các phương thức cho đối tượng tệp

MethodDescriptionclose[]Đóng fileetach[]Trả về luồng thô đã tách từ bộ đệmfileno[]Trả về một số đại diện cho luồng, từ phối cảnh của hệ điều hànhflush[]Xả bộ đệm bên trong[]Trả về liệu luồng tệp có tương tác hay không đọc[]

Tìm hiểu thêm về đối tượng tệp trong Hướng dẫn xử lý tệp Python của chúng tôi

Trong python, quyền truy cập vào các tệp được cung cấp thông qua một đối tượng tệp, được tạo bằng cách gọi hàm open dựng sẵn. Khi một đối tượng như vậy được tạo, một số lượng lớn các phương thức có sẵn để truy cập tệp, cả để đọc và ghi

Hàm mở có từ một đến ba đối số. Đối số đầu tiên, là đối số bắt buộc duy nhất, là tên của tệp cần mở. Thứ hai là một chuỗi mô tả [các] hành động mà bạn định thực hiện đối với tệp, như được minh họa trong Bảng 5. 2. Nếu bạn không cung cấp đối số thứ hai, thì mặc định là 'r', nghĩa là tệp được mở để đọc. 'B' có thể được thêm vào đối số thứ hai để chỉ ra rằng tệp được mở là tệp nhị phân trái ngược với tệp văn bản; . Cuối cùng, đối số thứ ba tùy chọn chỉ định thông tin về cách tệp sẽ được lưu vào bộ đệm; . [Trong ngữ cảnh này, bộ đệm kiểm soát lượng thông tin được thao tác trong bộ nhớ trước khi bất kỳ hành động nào thực sự được thực hiện trên tệp. ] Trong hầu hết các trường hợp, không cần cung cấp open với đối số thứ ba. Thật không may, không có cách nào để bỏ bộ đệm đầu ra tiêu chuẩn bên trong một chương trình đang thực thi;

Khi chỉ định tên tệp trong Windows, bạn có thể sử dụng dấu gạch chéo ngược đơn [

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
6], dấu gạch chéo ngược kép [
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
7] hoặc dấu gạch chéo đơn [
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
8] làm dấu tách tệp. Cần thận trọng khi sử dụng một dấu gạch chéo ngược vì tất cả các chuỗi có dấu gạch chéo ngược trong Bảng 2. 1 sẽ vẫn giữ nguyên ý nghĩa thông thường của chúng

Bảng 5. 2. Các chế độ tệp cho tệp functionStringMeaningr đang mởMở tệp để đọc; . wMở tệp để viết;

Nếu python gặp sự cố khi mở tệp, nó sẽ đưa ra một ngoại lệ IOError, cùng với một thông báo chi tiết hơn mô tả sự cố. Vì vậy, một cách khôn ngoan là mở các tệp bên trong mệnh đề try/ngoại trừ để ngăn chương trình của bạn kết thúc một cách vô duyên khi có sự cố khi mở tệp

Khi bạn đã mở thành công một tệp, có một số phương thức có thể được gọi bởi đối tượng tệp được trả về bởi open. Các phần phụ sau đây mô tả một số phương pháp này

Tệp được đặt tên vị trí trên đĩa để lưu trữ thông tin liên quan. Chúng được sử dụng để lưu trữ vĩnh viễn dữ liệu trong bộ nhớ cố định [e. g. ổ đĩa cứng]

Do Bộ nhớ truy cập ngẫu nhiên [RAM] không ổn định [mất dữ liệu khi tắt máy tính], chúng tôi sử dụng các tệp để sử dụng dữ liệu trong tương lai bằng cách lưu trữ chúng vĩnh viễn

Khi chúng ta muốn đọc hoặc ghi vào một tệp, trước tiên chúng ta cần mở nó. Khi chúng tôi hoàn tất, nó cần được đóng lại để các tài nguyên được liên kết với tệp được giải phóng

Do đó, trong Python, thao tác tệp diễn ra theo thứ tự sau

  1. Mở tệp tin
  2. Đọc hoặc viết [thực hiện thao tác]
  3. Đóng tệp

Mở tệp bằng Python

Python có chức năng

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
2 tích hợp để mở tệp. Hàm này trả về một đối tượng tệp, còn được gọi là tay cầm, vì nó được sử dụng để đọc hoặc sửa đổi tệp cho phù hợp

>>> f = open["test.txt"]    # open file in current directory
>>> f = open["C:/Python38/README.txt"]  # specifying full path

Chúng tôi có thể chỉ định chế độ trong khi mở tệp. Trong chế độ, chúng tôi chỉ định xem chúng tôi muốn đọc

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
3, viết
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4 hay nối thêm
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5 vào tệp. Chúng tôi cũng có thể chỉ định nếu chúng tôi muốn mở tệp ở chế độ văn bản hoặc chế độ nhị phân

Mặc định là đọc ở chế độ văn bản. Ở chế độ này, chúng tôi nhận được chuỗi khi đọc từ tệp

Mặt khác, chế độ nhị phân trả về byte và đây là chế độ được sử dụng khi xử lý các tệp không phải văn bản như hình ảnh hoặc tệp thực thi

Chế độ Mô tả

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
3Mở tệp để đọc. [mặc định]
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4Mở tệp để ghi. Tạo một tệp mới nếu nó không tồn tại hoặc cắt bớt tệp nếu nó tồn tại.
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
8Mở tệp để tạo độc quyền. Nếu tệp đã tồn tại, thao tác không thành công.
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5Mở tệp để thêm vào cuối tệp mà không cắt bớt tệp. Tạo một tập tin mới nếu nó không tồn tại.
f = open["test.txt", mode='r', encoding='utf-8']
0Mở ở chế độ văn bản. [mặc định]
f = open["test.txt", mode='r', encoding='utf-8']
1Mở ở chế độ nhị phân.
f = open["test.txt", mode='r', encoding='utf-8']
2Mở tệp để cập nhật [đọc và viết]

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode

Không giống như các ngôn ngữ khác, ký tự

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5 không ngụ ý số 97 cho đến khi nó được mã hóa bằng cách sử dụng
f = open["test.txt", mode='r', encoding='utf-8']
4 [hoặc các mã hóa tương đương khác]

Hơn nữa, mã hóa mặc định phụ thuộc vào nền tảng. Trong windows, nó là

f = open["test.txt", mode='r', encoding='utf-8']
5 nhưng trong Linux là
f = open["test.txt", mode='r', encoding='utf-8']
6

Vì vậy, chúng tôi cũng không được dựa vào mã hóa mặc định, nếu không, mã của chúng tôi sẽ hoạt động khác trong các nền tảng khác nhau

Do đó, khi làm việc với các tệp ở chế độ văn bản, bạn nên chỉ định loại mã hóa

f = open["test.txt", mode='r', encoding='utf-8']

Đóng tệp bằng Python

Khi chúng tôi thực hiện xong các thao tác trên tệp, chúng tôi cần đóng tệp đúng cách

Đóng tệp sẽ giải phóng các tài nguyên được liên kết với tệp. Nó được thực hiện bằng cách sử dụng phương thức

f = open["test.txt", mode='r', encoding='utf-8']
7 có sẵn trong Python

Python có bộ thu gom rác để dọn sạch các đối tượng không được ước tính nhưng chúng ta không được dựa vào nó để đóng tệp

>>> f = open["test.txt"]    # open file in current directory
>>> f = open["C:/Python38/README.txt"]  # specifying full path
9

Phương pháp này không hoàn toàn an toàn. Nếu một ngoại lệ xảy ra khi chúng tôi đang thực hiện một số thao tác với tệp, mã sẽ thoát mà không đóng tệp

Một cách an toàn hơn là sử dụng try. cuối cùng chặn

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
0

Bằng cách này, chúng tôi đảm bảo rằng tệp được đóng đúng cách ngay cả khi một ngoại lệ được đưa ra khiến dòng chương trình dừng lại

Cách tốt nhất để đóng tệp là sử dụng câu lệnh

f = open["test.txt", mode='r', encoding='utf-8']
8. Điều này đảm bảo rằng tệp được đóng khi khối bên trong câu lệnh
f = open["test.txt", mode='r', encoding='utf-8']
8 được thoát

Chúng ta không cần gọi phương thức

f = open["test.txt", mode='r', encoding='utf-8']
7 một cách rõ ràng. Nó được thực hiện trong nội bộ

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4

Ghi vào tệp bằng Python

Để ghi vào một tệp bằng Python, chúng ta cần mở tệp đó ở chế độ ghi

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4, nối thêm
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5 hoặc chế độ tạo độc quyền
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
8

Chúng ta cần cẩn thận với chế độ

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
4, vì nó sẽ ghi đè lên tệp nếu nó đã tồn tại. Do đó, tất cả dữ liệu trước đó sẽ bị xóa

Viết một chuỗi hoặc chuỗi byte [đối với tệp nhị phân] được thực hiện bằng phương thức

>>> f = open["test.txt"]    # open file in current directory
>>> f = open["C:/Python38/README.txt"]  # specifying full path
95. Phương thức này trả về số ký tự được ghi vào tệp

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
0

Chương trình này sẽ tạo một tệp mới có tên là

>>> f = open["test.txt"]    # open file in current directory
>>> f = open["C:/Python38/README.txt"]  # specifying full path
96 trong thư mục hiện tại nếu nó không tồn tại. Nếu nó tồn tại, nó sẽ bị ghi đè

Chúng ta phải bao gồm các ký tự dòng mới để phân biệt các dòng khác nhau

Đọc tệp bằng Python

Để đọc một tệp bằng Python, chúng ta phải mở tệp ở chế độ đọc

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
3

Có nhiều phương pháp có sẵn cho mục đích này. Chúng ta có thể sử dụng phương pháp

>>> f = open["test.txt"]    # open file in current directory
>>> f = open["C:/Python38/README.txt"]  # specifying full path
98 để đọc kích thước của dữ liệu. Nếu tham số kích thước không được chỉ định, nó sẽ đọc và trả về đến cuối tệp

Chúng ta có thể đọc tệp

>>> f = open["test.txt"]    # open file in current directory
>>> f = open["C:/Python38/README.txt"]  # specifying full path
99 mà chúng ta đã viết ở phần trên theo cách sau

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
5

Chúng ta có thể thấy rằng phương thức

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
00 trả về một dòng mới là
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
01. Khi đến cuối tệp, chúng tôi nhận được một chuỗi trống khi đọc thêm

Chúng ta có thể thay đổi [vị trí] con trỏ tệp hiện tại bằng cách sử dụng phương pháp

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
02. Tương tự, phương thức
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
03 trả về vị trí hiện tại của chúng ta [tính theo số byte]

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
0

Chúng ta có thể đọc từng dòng một tệp bằng cách sử dụng vòng lặp for. Cái này vừa hiệu quả vừa nhanh

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
1

Trong chương trình này, bản thân các dòng trong tệp bao gồm một ký tự xuống dòng

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
04. Vì vậy, chúng tôi sử dụng tham số kết thúc của hàm
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
05 để tránh hai dòng mới khi in

Ngoài ra, chúng ta có thể sử dụng phương pháp

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
06 để đọc các dòng riêng lẻ của tệp. Phương pháp này đọc một tệp cho đến dòng mới, bao gồm cả ký tự dòng mới

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
0

Cuối cùng, phương thức

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
07 trả về danh sách các dòng còn lại của toàn bộ tệp. Tất cả các phương thức đọc này đều trả về các giá trị trống khi đến cuối tệp [EOF]

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
1

Phương thức tệp Python

Có nhiều phương thức khác nhau có sẵn với đối tượng tệp. Một số trong số chúng đã được sử dụng trong các ví dụ trên

Dưới đây là danh sách đầy đủ các phương thức trong chế độ văn bản với một mô tả ngắn gọn

MethodDescriptionclose[]Đóng một tập tin đã mở. Nó không có tác dụng nếu tệp đã được đóng. detach[] Tách bộ đệm nhị phân cơ bản khỏi

f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
08 và trả về nó. fileno[] Trả về một số nguyên [mô tả tệp] của tệp. flush[] Xóa bộ đệm ghi của luồng tệp. isatty[]Trả về
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
09 nếu luồng tệp tương tác. read[n]Đọc tối đa n ký tự từ tệp. Đọc đến cuối tệp nếu nó âm hoặc
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
40. readable[] Trả về
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
09 nếu luồng tệp có thể được đọc từ. readline[n=-1]Đọc và trả về một dòng từ tệp. Đọc tối đa n byte nếu được chỉ định. readlines[n=-1]Đọc và trả về danh sách các dòng từ tệp. Đọc tối đa n byte/ký tự nếu được chỉ định. seek[offset,from=
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
42]Thay đổi vị trí tệp thành byte bù, liên quan đến from [bắt đầu, hiện tại, kết thúc]. seekable[] Trả về
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
09 nếu luồng tệp hỗ trợ truy cập ngẫu nhiên. Tell[] Trả về một số nguyên đại diện cho vị trí hiện tại của đối tượng tệp. truncate[size=____240]Thay đổi kích thước luồng tệp thành kích thước byte. Nếu kích thước không được chỉ định, hãy thay đổi kích thước thành vị trí hiện tại. writable[] Trả về
f = open["test.txt"]      # equivalent to 'r' or 'rt'
f = open["test.txt",'w']  # write in text mode
f = open["img.bmp",'r+b'] # read and write in binary mode
09 nếu luồng tệp có thể được ghi vào. write[s]Ghi chuỗi s vào tệp và trả về số ký tự đã ghi. writelines[lines] Ghi danh sách các dòng vào tệp

Đối tượng tệp trong Python là gì?

Đối tượng tệp là gì? . 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. provides methods and attributes to access and manipulate files. Using file objects, we can read or write any files. Whenever we open a file to perform any operations on it, Python returns a file object.

Đối tượng tệp có nghĩa là gì?

Tệp đối tượng là tệp máy tính chứa mã đối tượng, tức là đầu ra mã máy của trình hợp dịch mã hoặc trình biên dịch . Mã đối tượng thường có thể định vị lại và thường không thể thực thi trực tiếp. Có nhiều định dạng khác nhau cho các tệp đối tượng và cùng một mã máy có thể được đóng gói trong các định dạng tệp đối tượng khác nhau.

Các đối tượng tệp được sử dụng để làm gì?

Đối tượng tệp cho phép chúng tôi sử dụng, truy cập và thao tác với tất cả các tệp mà người dùng có thể truy cập . Người ta có thể đọc và ghi bất kỳ tệp nào như vậy. Khi thao tác với tệp không thành công vì lý do liên quan đến I/O, ngoại lệ IOError sẽ xuất hiện.

Hai loại tệp trong Python là gì?

Có hai loại tệp dữ liệu chủ yếu — tệp văn bản và tệp nhị phân . Một tệp văn bản bao gồm các ký tự mà con người có thể đọc được, có thể được mở bởi bất kỳ trình soạn thảo văn bản nào. Mặt khác, các tệp nhị phân được tạo thành từ các ký tự và ký hiệu không thể đọc được của con người, yêu cầu các chương trình cụ thể để truy cập nội dung của nó.

Chủ Đề