Con trỏ tệp trong Python là gì?

Xử lý tệp bằng Python không yêu cầu nhập mô-đun. Đối tượng Tệp cung cấp các hàm và phương thức cơ bản cần thiết để thao tác với tệp theo mặc định. Python cung cấp cho bạn những cách dễ dàng để thao tác với các tệp này. Để đọc dữ liệu từ một tệp, trước hết, bạn cần mở nó ở chế độ đọc. Sau đó, bạn có thể gọi bất kỳ phương thức nào mà Python cung cấp để đọc từ tệp

Thực tế, có một số cách để đọc tệp văn bản trong Python. Hàm đọc chứa các phương thức khác nhau, read[],readline[] và readlines[]

  1. đã đọc[[số]]. Trả về số ký tự đã chỉ định từ tệp. nếu bỏ qua nó sẽ đọc toàn bộ nội dung của tập tin
  2. dòng đọc []. Trả về dòng tiếp theo của tệp
  3. đường đọc []. Đọc tất cả các dòng dưới dạng danh sách các chuỗi trong tệp

Đọc toàn bộ nội dung của tập tin cùng một lúc

đầu ra

Chỉ đọc một dòng

đầu ra

Đọc dữ liệu sử dụng kích thước

đầu ra

Đọc tất cả các dòng dưới dạng một mảng

đầu ra

Đọc từng dòng tệp

Nếu bạn muốn đọc tất cả các dòng từ một tệp trong bộ nhớ hiệu quả hơn, bạn có thể sử dụng phương pháp lặp lại

Cho đến nay trong khóa học này, chúng tôi đã sử dụng các biến để lưu trữ dữ liệu. Vấn đề với phương pháp này là ngay sau khi chương trình kết thúc, dữ liệu của chúng tôi sẽ bị mất. Một cách để lưu trữ dữ liệu vĩnh viễn là đặt nó vào một tệp. Chương này thảo luận về cách chúng ta có thể lưu trữ dữ liệu trong tệp cũng như đọc dữ liệu từ tệp

Trong Python, Xử lý tệp bao gồm ba bước sau

  1. Mở tập tin
  2. xử lý tập tin tôi. e thực hiện thao tác đọc hoặc ghi
  3. Đóng tệp

Các loại tệp

Có hai loại tập tin

Tệp có nội dung mà chương trình soạn thảo văn bản có thể xem được gọi là tệp văn bản. Tệp văn bản chỉ đơn giản là một chuỗi ký tự ASCII hoặc Unicode. Các chương trình Python, mã nguồn HTML là một số ví dụ về tệp văn bản

Một tệp nhị phân lưu trữ dữ liệu theo cách giống như được lưu trữ trong bộ nhớ. Các tệp mp3, tệp hình ảnh, tài liệu từ là một số ví dụ về tệp nhị phân. Bạn không thể đọc tệp nhị phân bằng trình soạn thảo văn bản

Trong bài học này, chúng ta sẽ thảo luận về cách làm việc với cả hai loại tệp

Hãy bắt đầu

Mở một tệp

Trước khi bạn thực hiện bất kỳ thao tác nào trên một tệp, bạn phải mở nó. Python cung cấp một hàm có tên là

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
2 để mở tệp. Cú pháp của nó là

fileobject = open[filename,  mode]

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
3 là tên hoặc đường dẫn của tệp

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
4 là một chuỗi xác định thao tác loại mà bạn muốn thực hiện trên tệp [i. e đọc, viết, chắp thêm, v.v.]. Bảng sau đây liệt kê các chế độ khác nhau có sẵn cho bạn

Chế độ Mô tả

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
5Mở tệp để đọc. Nếu tệp chưa tồn tại, bạn sẽ gặp lỗi
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
6.
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
7Mở tệp để viết. Trong chế độ này, nếu tệp được chỉ định không tồn tại, nó sẽ được tạo. Nếu tệp tồn tại, thì dữ liệu của nó sẽ bị hủy.
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
8Mở tệp ở chế độ nối thêm. Nếu tệp không tồn tại, chế độ này sẽ tạo tệp. Nếu tệp đã tồn tại thì nó sẽ thêm dữ liệu mới vào cuối tệp thay vì hủy dữ liệu như chế độ
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
7 thực hiện

Chúng tôi cũng có thể chỉ định loại tệp [i. tệp văn bản điện tử hoặc tệp nhị phân. ] chúng tôi muốn làm việc với chuỗi

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
4 bằng cách nối thêm
fileobject = open[filename,  mode]
01 cho tệp văn bản và
fileobject = open[filename,  mode]
02 cho tệp nhị phân. Nhưng vì chế độ văn bản là chế độ mặc định nên nó thường bị bỏ qua khi mở tệp ở chế độ văn bản

Khi thành công,

fileobject = open[filename,  mode]
03 trả về một đối tượng tệp được liên kết với
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
3 được chỉ định trong khi gọi nó

Dưới đây là một số ví dụ về cách mở tệp

ví dụ 1

fileobject = open[filename,  mode]
4

Câu lệnh này mở tệp văn bản

fileobject = open[filename,  mode]
05 để đọc. Vì chế độ văn bản là mặc định, câu lệnh trên cũng có thể được viết là

fileobject = open[filename,  mode]
6

ví dụ 2

Câu lệnh này mở tệp văn bản ở chế độ ghi

ví dụ 3

Câu lệnh này mở tệp nhị phân ở chế độ ghi

Ví dụ 4

Câu lệnh này mở tệp nhị phân ở chế độ chắp thêm

Thay vì sử dụng đường dẫn tệp tương đối, chúng tôi cũng có thể sử dụng đường dẫn tệp tuyệt đối. Ví dụ

fileobject = open[filename,  mode]
7

Câu lệnh này sẽ mở tệp văn bản

fileobject = open[filename,  mode]
06 nằm trong thư mục
fileobject = open[filename,  mode]
07 ở chế độ ghi

Trong Windows, hãy nhớ thoát dấu gạch chéo ngược trong khi sử dụng tên đường dẫn tuyệt đối, nếu không, bạn sẽ gặp lỗi. Ví dụ

f = open["C:\\Users\\tom\\documents\\README.md", "w"]

Chúng ta cũng có thể sử dụng một thứ gọi là "chuỗi thô" bằng cách chỉ định ký tự

fileobject = open[filename,  mode]
08 ở phía trước chuỗi như sau

fileobject = open[filename,  mode]
0

Ký tự

fileobject = open[filename,  mode]
08 khiến Python coi mọi ký tự trong chuỗi là ký tự chữ

Đóng tệp

Khi chúng ta làm việc xong với tệp hoặc chúng ta muốn mở tệp ở một số chế độ khác, chúng ta nên đóng tệp bằng phương thức

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
40 của đối tượng tệp như sau

Đóng tệp sẽ giải phóng tài nguyên hệ thống có giá trị. Trong trường hợp bạn quên đóng tệp, Python sẽ tự động đóng tệp khi chương trình kết thúc hoặc đối tượng tệp không còn được tham chiếu trong chương trình. Tuy nhiên, nếu chương trình của bạn lớn và bạn đang đọc hoặc ghi nhiều tệp có thể chiếm một lượng tài nguyên đáng kể trên hệ thống. Nếu bạn tiếp tục mở các tệp mới một cách bất cẩn, bạn có thể hết tài nguyên. Vì vậy, hãy là một lập trình viên giỏi và đóng tệp ngay khi bạn hoàn thành nó

TextIOWlớp rapper

Đối tượng tệp được trả về bởi hàm

fileobject = open[filename,  mode]
03 là một đối tượng kiểu
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
42. Lớp
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
42 cung cấp các phương thức và thuộc tính giúp chúng ta đọc hoặc ghi dữ liệu vào và ra khỏi tệp. Bảng sau liệt kê một số phương thức thường dùng của lớp
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
42

MethodDescription

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
45Đọc số ký tự được chỉ định từ tệp và trả về chúng dưới dạng chuỗi. Nếu
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
46 bị bỏ qua thì nó sẽ đọc toàn bộ tệp.
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47Đọc một dòng và trả về dưới dạng một chuỗi.
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
48Đọc nội dung của một tệp theo từng dòng và trả về chúng dưới dạng danh sách các chuỗi.
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
49Ghi đối số chuỗi vào tệp và trả về số ký tự được ghi vào tệp.
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
40Di chuyển con trỏ tệp đến phần bù đã cho từ gốc.
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
41Trả về vị trí hiện tại của con trỏ tệp.
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
40Đóng tệp

Ghi dữ liệu vào tệp văn bản

Chương trình sau minh họa cách ghi dữ liệu vào tệp

python 101/Chương-18/write_to_file. py

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
4

Trong dòng 1, chúng tôi đang sử dụng phương pháp

fileobject = open[filename,  mode]
03 để mở tệp văn bản ở chế độ ghi. Nếu tệp
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
44 không tồn tại, phương thức
fileobject = open[filename,  mode]
03 sẽ tạo tệp. Nếu tệp đã tồn tại, thì dữ liệu của nó sẽ bị ghi đè. Chạy chương trình rồi mở tệp
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
44. Nó sẽ giống như thế này

python101/Chương-18/readme. md

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
4

Chúng ta hãy xem kỹ cách phương thức

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 ghi dữ liệu vào tệp

Tất cả các hoạt động đọc và ghi trong một tệp bắt đầu tại con trỏ tệp. Con trỏ tệp là gì? . Con trỏ này tự động di chuyển sau mỗi thao tác đọc hoặc ghi

Khi mở tệp con trỏ tệp trỏ về đầu tệp. Hàm

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 bắt đầu ghi ở vị trí tệp hiện tại và sau đó tăng con trỏ tệp. Ví dụ, hình dưới đây cho thấy vị trí của con trỏ tệp sau mỗi thao tác ghi

Lưu ý rằng không giống như hàm

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
49, phương thức
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 không tự động in ký tự xuống dòng [
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
71] ở cuối chuỗi. Chúng ta cũng có thể sử dụng hàm
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
49 để ghi dữ liệu vào tệp. Chúng ta hãy xem xét kỹ hơn chữ ký của
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
49 bằng cách sử dụng hàm
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
74

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
7

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
2

Lưu ý tham số thứ tư trong chữ ký hàm i. e

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
75. Theo mặc định,
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
75 trỏ đến đầu ra tiêu chuẩn có nghĩa là nó sẽ in dữ liệu ra màn hình. Để xuất dữ liệu ra tệp, chỉ cần chỉ định đối tượng tệp. Chương trình sau sử dụng hàm
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
49 thay vì
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 để ghi dữ liệu vào tệp

python 101/Chương-18/ghi dữ liệu bằng print_function. py

fileobject = open[filename,  mode]
40

Chương trình này tạo ra kết quả giống như trước đây, điểm khác biệt duy nhất là, trong trường hợp này, ký tự xuống dòng [

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
71] được tự động thêm vào bởi hàm
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
49

Đọc dữ liệu từ tệp văn bản

Để đọc một tập tin, bạn phải mở nó ở chế độ

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
5. Ngoài ra, bạn cũng nên đảm bảo rằng tệp bạn muốn đọc đã tồn tại vì ở chế độ
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
5, hàm
fileobject = open[filename,  mode]
03 đưa ra lỗi
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
6 nếu không thể tìm thấy tệp

Để kiểm tra xem một tệp có tồn tại hay không, chúng ta có thể sử dụng hàm

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
25 từ mô-đun
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
26. Cú pháp của
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
25 là

Nếu tìm thấy tệp tại đường dẫn đã cho

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
25 trả về
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
29. Nếu không thì
fileobject = open[filename,  mode]
400. Phiên trình bao sau đây minh họa hoạt động của hàm
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
25

fileobject = open[filename,  mode]
41

Các chương trình sau minh họa cách đọc tệp bằng cách sử dụng hàm

fileobject = open[filename,  mode]
402,
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 và
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
48

ví dụ 1. Đọc dữ liệu cùng một lúc bằng phương pháp

fileobject = open[filename,  mode]
402

python 101/Chương-18/bản trình diễn phương pháp đọc. py

fileobject = open[filename,  mode]
42

đầu ra

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
4

ví dụ 2. Đọc dữ liệu theo khối bằng phương pháp

fileobject = open[filename,  mode]
402

python 101/Chương-18/đọc theo khối. py

fileobject = open[filename,  mode]
44

đầu ra

fileobject = open[filename,  mode]
45

Khi tệp được mở ở chế độ đọc, con trỏ tệp chỉ vào đầu tệp

Sau khi đọc 4 ký tự đầu tiên, con trỏ tệp ở vị trí

fileobject = open[filename,  mode]
407

Sau khi đọc 10 ký tự tiếp theo, con trỏ tệp ở ký tự

fileobject = open[filename,  mode]
408

Cuộc gọi thứ ba đến

fileobject = open[filename,  mode]
402 đọc các ký tự còn lại trong tệp và trả về chúng dưới dạng chuỗi. Lúc này, con trỏ vị trí tệp trỏ đến cuối tệp. Do đó, mọi lệnh gọi tiếp theo tới phương thức
fileobject = open[filename,  mode]
402 đều trả về một chuỗi rỗng

ví dụ 3. Sử dụng

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 để đọc dữ liệu từ tệp

bản trình diễn phương thức python 101/Chương-18/readline. py

fileobject = open[filename,  mode]
46

fileobject = open[filename,  mode]
47

đầu ra

fileobject = open[filename,  mode]
48

Thông thường khi mở tệp, con trỏ tệp chỉ vào đầu tệp

Cuộc gọi đầu tiên đến phương thức

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 di chuyển con trỏ tệp đến đầu dòng tiếp theo

Hàm

fileobject = open[filename,  mode]
402 sau đó đọc hai ký tự từ tệp sẽ di chuyển con trỏ tệp tới ký tự
fileobject = open[filename,  mode]
414

Ở dòng 10,

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 lại được gọi nhưng lần này nó bắt đầu đọc từ ký tự
fileobject = open[filename,  mode]
414 đến cuối dòng [kể cả ký tự xuống dòng]

Ở dòng 13,

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 được gọi lại để đọc dòng cuối cùng. Lúc này, con trỏ vị trí tệp nằm ở cuối tệp. Đó là lý do tại sao lệnh gọi
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 ở dòng 16 trả về một chuỗi rỗng [
fileobject = open[filename,  mode]
419]

Ví dụ 4. Sử dụng

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
48 để đọc dữ liệu từ tệp

bản trình diễn phương thức python 101/Chương-18/readlines. py

fileobject = open[filename,  mode]
49

đầu ra

fileobject = open[filename,  mode]
60

Đọc các tệp lớn

Các phương pháp

fileobject = open[filename,  mode]
402 và
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
48 hoạt động tốt với các tệp nhỏ. Nhưng nếu tệp của bạn có hàng nghìn hoặc hàng triệu dòng trong đó thì sao? . Một cách tiếp cận tốt hơn là sử dụng các vòng lặp và đọc dữ liệu tệp theo từng phần nhỏ. Ví dụ

python 101/Chương-18/đọc tệp demo1 lớn. py

fileobject = open[filename,  mode]
61

fileobject = open[filename,  mode]
62

đầu ra

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
4

Ở đây chúng tôi đang sử dụng một vòng lặp vô hạn để lặp lại nội dung của tệp. Ngay khi kết thúc tệp, phương thức

fileobject = open[filename,  mode]
402 trả về một chuỗi rỗng [
fileobject = open[filename,  mode]
419], nếu điều kiện ở dòng 12, đánh giá là đúng và câu lệnh
fileobject = open[filename,  mode]
427 khiến vòng lặp kết thúc

Python cũng cho phép chúng ta sử dụng vòng lặp for để lặp qua tệp dữ liệu bằng đối tượng tệp như sau

python101/Chương-18/reading_large_files_using_for_loop. py

fileobject = open[filename,  mode]
64

đầu ra

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
4

Gắn thêm dữ liệu vào tệp văn bản

Chúng ta có thể sử dụng chế độ

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
8 để nối thêm dữ liệu vào cuối tệp. Chương trình sau minh họa cách thêm dữ liệu vào cuối tệp

python101/Chương-18/append_data. py

fileobject = open[filename,  mode]
66

fileobject = open[filename,  mode]
67

đầu ra

fileobject = open[filename,  mode]
68

fileobject = open[filename,  mode]
69

Làm việc với các tệp bằng câu lệnh with

Python cũng cung cấp một lối tắt đẹp để xử lý tệp bằng cách sử dụng câu lệnh

fileobject = open[filename,  mode]
429. Sau đây là dạng chung của câu lệnh
fileobject = open[filename,  mode]
429 khi được sử dụng với tệp

fileobject = open[filename,  mode]
70

Điều tốt nhất về lối tắt này là nó tự động đóng tệp mà không yêu cầu bất kỳ thao tác nào từ phía bạn. Các câu lệnh bên trong phần thân của câu lệnh with phải được thụt lề bằng nhau nếu không bạn sẽ gặp lỗi. Phạm vi của biến

fileobject = open[filename,  mode]
431 chỉ giới hạn trong phần thân của câu lệnh
fileobject = open[filename,  mode]
429. Nếu bạn cố gọi phương thức
fileobject = open[filename,  mode]
402 hoặc
f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47 trên nó bên ngoài khối, bạn sẽ gặp lỗi

Các ví dụ sau đây cho thấy cách chúng ta có thể sử dụng câu lệnh

fileobject = open[filename,  mode]
429 để đọc và ghi dữ liệu vào và từ tệp

ví dụ 1. Đọc từng dòng dữ liệu bằng vòng lặp for

python 101/Chương-18/có câu lệnh. py

fileobject = open[filename,  mode]
71

đầu ra

fileobject = open[filename,  mode]
72

ví dụ 2. Đọc tất cả dữ liệu cùng một lúc bằng phương pháp

fileobject = open[filename,  mode]
402

python101/Chương-18/with_statement2. py

fileobject = open[filename,  mode]
73

đầu ra

fileobject = open[filename,  mode]
72

ví dụ 3. Đọc một tệp lớn trong các khối nhỏ

python 101/Chương-18/với câu lệnh 3. py

fileobject = open[filename,  mode]
75

fileobject = open[filename,  mode]
76

đầu ra

fileobject = open[filename,  mode]
72

Ví dụ 4. Ghi dữ liệu vào tệp bằng phương thức

f = open["C:\\Users\\tom\\documents\\README.md", "w"]
47

python101/Chương-18/with_statement4. py

fileobject = open[filename,  mode]
78

Đọc và ghi dữ liệu nhị phân

Chương trình sau sao chép dữ liệu nhị phân từ tệp nguồn [

fileobject = open[filename,  mode]
438] sang tệp đích [
fileobject = open[filename,  mode]
439]

Con trỏ tệp là gì?

Con trỏ tệp lưu trữ vị trí đọc hoặc ghi hiện tại trong tệp . Tất cả các hoạt động trong tệp được thực hiện với tham chiếu đến con trỏ. Kiểu dữ liệu của con trỏ này được định nghĩa trong stdio. h và được đặt tên là FILE.

con trỏ tập tin với ví dụ là gì?

Đối với I/O tệp C, bạn cần sử dụng con trỏ FILE, con trỏ này sẽ cho phép chương trình theo dõi tệp đang được truy cập. Ví dụ. FILE *fp; Để mở một tập tin, bạn cần sử dụng hàm fopen, hàm này trả về một con trỏ FILE.

Vị trí tệp trong Python là gì?

Phương thức tệp Python seek[] đặt vị trí hiện tại của tệp ở phần bù . Đối số wherece là tùy chọn và mặc định là 0, có nghĩa là vị trí tệp tuyệt đối, các giá trị khác là 1 có nghĩa là tìm kiếm tương ứng với vị trí hiện tại và 2 có nghĩa là tìm kiếm tương ứng với phần cuối của tệp. không có giá trị quay lại.

Tệp trong Python với ví dụ là gì?

Tệp là một số thông tin hoặc dữ liệu nằm trong thiết bị lưu trữ của máy tính . Bạn đã biết về các loại tệp khác nhau, chẳng hạn như tệp nhạc, tệp video, tệp văn bản. Python cung cấp cho bạn những cách dễ dàng để thao tác với các tệp này. Nói chung, chúng tôi chia các tệp thành hai loại, tệp văn bản và tệp nhị phân.

Chủ Đề