Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

Xử lý tệp là một phần không thể thiếu trong hầu hết các ngôn ngữ lập trình. Python cung cấp các phương thức xử lý tệp tích hợp để mở, đóng, đọc và ghi tệp để đọc và lưu trữ dữ liệu. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách mở tệp để đọc và ghi trong python

Trước tiên chúng ta phải mở một tệp trước khi có thể đọc hoặc ghi vào tệp đó. Sau đó, đóng tệp sau khi chúng tôi hoàn tất để các tài nguyên được liên kết với tệp có thể được giải phóng. Do đó, có ba bước trong bất kỳ thao tác xử lý tệp nào bao gồm

  • Mở tệp tin
  • Thực hiện thao tác mong muốn như đọc hoặc viết văn bản
  • Đóng một tập tin

Các chế độ truy cập tệp xác định cách tệp được sử dụng sau khi tệp được mở. Có sáu chế độ truy cập khác nhau được sử dụng để đọc hoặc ghi hoặc thực hiện các thao tác đọc và ghi đồng thời

Trước khi chuyển sang các ví dụ mã hóa thực tế, hãy nhớ rằng nếu bạn đang làm việc trên tệp văn bản, python sẽ lấy EOL (cuối dòng) hoặc trong ngôn ngữ lập trình “\n” làm điểm kết thúc cho dòng trong tệp văn bản và

Trong hướng dẫn này, chúng ta sẽ thảo luận về đọc và ghi tệp. Cú pháp để mở một tập tin là

File_object = open("File_name","Access_mode")

Lưu ý rằng tệp được đọc hoặc ghi phải nằm trong cùng thư mục chứa tệp python của bạn. Nếu không, hãy cung cấp đường dẫn đầy đủ của tệp đó. Nếu không, mã sẽ cung cấp cho bạn lỗi tệp

Nếu bạn muốn tìm hiểu thêm về Lập trình Python, hãy truy cập Hướng dẫn về Python

Chúng tôi sẽ sử dụng hai phương pháp khác nhau để đọc và ghi trong một tệp

  • Cả đọc và ghi tệp bằng cách sử dụng chế độ Access “r+”
  • Cả đọc và ghi tệp bằng cách sử dụng chế độ Truy cập “w+”

cả Đọc và ghi tệp bằng cách sử dụng chế độ Truy cập “r+”

Python cung cấp các chế độ truy cập cho phép chúng ta xử lý và quyết định nên làm gì với các tệp sau khi chúng được mở. Chế độ truy cập đọc và ghi ('r+') được sử dụng cho cả việc đọc và ghi vào tệp. Đoạn mã dưới đây mở tập tin “myfile. txt” ở chế độ đọc và ghi và đọc tất cả các dòng trong tệp văn bản

file = open("myfile.txt", "r+") 
file.readline()  

Trong đoạn mã trên, chúng tôi đã sử dụng một tệp lệnh. readline() để đọc dòng cụ thể của tệp. Chúng tôi cũng có thể chỉ định số lượng dòng bằng cách chuyển đối số 'n' bên trong tệp. lệnh readline(n)

file = open("myfile.txt", "r+") 
file.read()

Ở đây, read() được sử dụng để lấy các byte cụ thể ở dạng chuỗi của tệp đã cho. chúng ta cũng có thể viết nó là read(n)

Để ghi vào file ta có thể sử dụng lệnh write() như hình bên dưới. Văn bản được viết được cung cấp dưới dạng đối số bên trong lệnh write()

file.write("any data")

Chúng ta cũng có thể sử dụng hàm writelines() để ghi tất cả dữ liệu một lần

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)

Cả Đọc và ghi tệp bằng cách sử dụng chế độ Truy cập “w+”

Một chế độ truy cập khác được sử dụng cho cả đọc và viết là chế độ 'w+'. Nó gần giống với chế độ truy cập 'r+'

file = open("myfile.txt", "w+") 

Trong đoạn mã trên, w+ là để đọc và viết. Nếu tệp tồn tại thì dữ liệu được lưu trữ trước đó sẽ bị ghi đè và dữ liệu trước đó sẽ bị xóa. Đây là điểm khác biệt duy nhất giữa chế độ 'r+' và 'w+'. Sau khi tệp được mở bằng chế độ ‘w+’, bạn có thể sử dụng phương thức read, readlines, write() và writelines() để đọc và ghi dữ liệu


Để mở tệp ở chế độ đọc/ghi, hãy chỉ định 'w+' làm chế độ. Ví dụ,

f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()

Mã trên mở my_file. txt ở chế độ ghi, lưu trữ nội dung tệp trong biến file_content và viết lại tệp để chứa "Xin chào thế giới". Bạn cũng có thể sử dụng chế độ r+ vì chế độ này không cắt bớt tệp.  

Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

Cập nhật ngày 01-Oct-2019 11. 39. 18

Một trong những tác vụ phổ biến nhất mà bạn có thể thực hiện với Python là đọc và ghi tệp. Cho dù đó là ghi vào tệp văn bản đơn giản, đọc nhật ký máy chủ phức tạp hay thậm chí phân tích dữ liệu byte thô, tất cả các tình huống này đều yêu cầu đọc hoặc ghi tệp

Trong hướng dẫn này, bạn sẽ học

  • Điều gì tạo nên một tệp và tại sao điều đó lại quan trọng trong Python
  • Khái niệm cơ bản về đọc và ghi tệp trong Python
  • Một số kịch bản cơ bản về đọc và ghi tệp

Hướng dẫn này chủ yếu dành cho Pythonistas mới bắt đầu đến trung cấp, nhưng có một số mẹo ở đây mà các lập trình viên cao cấp hơn cũng có thể đánh giá cao

Tiền thưởng miễn phí. Nhấp vào đây để nhận Bảng cheat Python miễn phí của chúng tôi, trang này cho bạn biết kiến ​​thức cơ bản về Python 3, như làm việc với các kiểu dữ liệu, từ điển, danh sách và hàm Python

Lấy bài kiểm tra. Kiểm tra kiến ​​thức của bạn với bài kiểm tra tương tác “Đọc và ghi tệp bằng Python” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian

Lấy bài kiểm tra "

Tập tin là gì?

Trước khi chúng ta có thể tìm hiểu cách làm việc với các tệp trong Python, điều quan trọng là phải hiểu chính xác tệp là gì và cách các hệ điều hành hiện đại xử lý một số khía cạnh của chúng

Về cốt lõi, một tệp là một tập hợp các byte liền kề được sử dụng để lưu trữ dữ liệu. Dữ liệu này được sắp xếp theo một định dạng cụ thể và có thể là bất kỳ thứ gì đơn giản như tệp văn bản hoặc phức tạp như chương trình thực thi. Cuối cùng, các tệp byte này sau đó được dịch thành mã nhị phân

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
5 và
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
6 để máy tính xử lý dễ dàng hơn

Các tệp trên hầu hết các hệ thống tệp hiện đại bao gồm ba phần chính

  1. tiêu đề. siêu dữ liệu về nội dung của tệp (tên tệp, kích thước, loại, v.v.)
  2. Dữ liệu. nội dung của tệp được viết bởi người tạo hoặc người chỉnh sửa
  3. Cuối tệp (EOF). ký tự đặc biệt cho biết kết thúc tệp
Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

Dữ liệu này thể hiện điều gì tùy thuộc vào đặc tả định dạng được sử dụng, thường được biểu thị bằng phần mở rộng. Ví dụ: một tệp có phần mở rộng là

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
7 rất có thể phù hợp với đặc tả Định dạng trao đổi đồ họa. Có hàng trăm, nếu không muốn nói là hàng nghìn phần mở rộng tệp ngoài kia. Đối với hướng dẫn này, bạn sẽ chỉ xử lý các phần mở rộng tệp
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
8 hoặc
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
9

Loại bỏ các quảng cáo

Đường dẫn tệp

Khi bạn truy cập một tệp trên hệ điều hành, cần có đường dẫn tệp. Đường dẫn tệp là một chuỗi đại diện cho vị trí của tệp. Nó được chia thành ba phần chính

  1. Đường dẫn thư mục. vị trí thư mục tệp trên hệ thống tệp nơi các thư mục tiếp theo được phân tách bằng dấu gạch chéo xuôi
    file = open("myfile.txt", "r+") 
    file.readline()  
    
    20 (Unix) hoặc dấu gạch chéo ngược
    file = open("myfile.txt", "r+") 
    file.readline()  
    
    21 (Windows)
  2. Tên tệp. tên thật của tập tin
  3. Sự mở rộng. phần cuối của đường dẫn tệp được đặt trước với dấu chấm (
    file = open("myfile.txt", "r+") 
    file.readline()  
    
    22) được sử dụng để chỉ loại tệp

Đây là một ví dụ nhanh. Giả sử bạn có một tệp nằm trong cấu trúc tệp như thế này

file = open("myfile.txt", "r+") 
file.readline()  
5

Giả sử bạn muốn truy cập tệp

file = open("myfile.txt", "r+") 
file.readline()  
23 và vị trí hiện tại của bạn nằm trong cùng thư mục với
file = open("myfile.txt", "r+") 
file.readline()  
24. Để truy cập tệp, bạn cần đi qua thư mục
file = open("myfile.txt", "r+") 
file.readline()  
24 rồi đến thư mục
file = open("myfile.txt", "r+") 
file.readline()  
26, cuối cùng đến tệp
file = open("myfile.txt", "r+") 
file.readline()  
23. Đường dẫn thư mục là
file = open("myfile.txt", "r+") 
file.readline()  
28. Tên tệp là
file = open("myfile.txt", "r+") 
file.readline()  
29. Phần mở rộng tệp là
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
7. Vì vậy, đường dẫn đầy đủ là
file = open("myfile.txt", "r+") 
file.read()
41

Bây giờ, giả sử rằng vị trí hiện tại của bạn hoặc thư mục làm việc hiện tại (cwd) nằm trong thư mục

file = open("myfile.txt", "r+") 
file.readline()  
26 của cấu trúc thư mục ví dụ của chúng tôi. Thay vì tham chiếu đến
file = open("myfile.txt", "r+") 
file.readline()  
23 bằng đường dẫn đầy đủ của
file = open("myfile.txt", "r+") 
file.read()
41, tệp có thể được tham chiếu đơn giản bằng tên tệp và phần mở rộng
file = open("myfile.txt", "r+") 
file.readline()  
23

file = open("myfile.txt", "r+") 
file.read()
9

Nhưng còn

file = open("myfile.txt", "r+") 
file.read()
46 thì sao? . Điều này có nghĩa là
file = open("myfile.txt", "r+") 
file.read()
48 sẽ tham chiếu tệp
file = open("myfile.txt", "r+") 
file.read()
46 từ thư mục của
file = open("myfile.txt", "r+") 
file.readline()  
26

file.write("any data")
5

Dấu chấm đôi (

file = open("myfile.txt", "r+") 
file.read()
47) có thể được nối với nhau để duyệt qua nhiều thư mục phía trên thư mục hiện tại. Ví dụ: để truy cập
file.write("any data")
72 từ thư mục
file = open("myfile.txt", "r+") 
file.readline()  
26, bạn sẽ sử dụng
file.write("any data")
74

kết thúc dòng

Một vấn đề thường gặp khi làm việc với dữ liệu tệp là biểu diễn của một dòng mới hoặc kết thúc dòng. Kết thúc dòng có nguồn gốc từ thời Mã Morse, khi một dấu hiệu cụ thể được sử dụng để thông báo kết thúc truyền hoặc kết thúc dòng

Sau đó, điều này đã được cả Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) và Hiệp hội Tiêu chuẩn Hoa Kỳ (ASA) chuẩn hóa cho máy in từ xa. Tiêu chuẩn ASA quy định rằng các kết thúc dòng phải sử dụng chuỗi các ký tự Trả về vận chuyển (

file.write("any data")
75 hoặc
file.write("any data")
76) và Nguồn cấp dữ liệu (
file.write("any data")
77 hoặc
file.write("any data")
78) (
file.write("any data")
79 hoặc
myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
50). Tuy nhiên, tiêu chuẩn ISO cho phép cả ký tự
file.write("any data")
79 hoặc chỉ ký tự
file.write("any data")
77

Windows sử dụng các ký tự

file.write("any data")
79 để biểu thị một dòng mới, trong khi Unix và các phiên bản Mac mới hơn chỉ sử dụng ký tự
file.write("any data")
77. Điều này có thể gây ra một số rắc rối khi bạn đang xử lý tệp trên một hệ điều hành khác với nguồn của tệp. Đây là một ví dụ nhanh. Giả sử chúng ta kiểm tra tệp
file = open("myfile.txt", "r+") 
file.read()
46 được tạo trên hệ thống Windows

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n

Đầu ra tương tự này sẽ được diễn giải khác nhau trên thiết bị Unix

file = open("myfile.txt", "r+") 
file.readline()  
2

Điều này có thể làm cho việc lặp lại trên mỗi dòng trở nên khó khăn và bạn có thể cần tính đến các tình huống như thế này

Mã hóa ký tự

Một vấn đề phổ biến khác mà bạn có thể gặp phải là mã hóa dữ liệu byte. Mã hóa là bản dịch từ dữ liệu byte sang ký tự có thể đọc được của con người. Điều này thường được thực hiện bằng cách gán một giá trị số để đại diện cho một ký tự. Hai mã hóa phổ biến nhất là Định dạng ASCII và UNICODE. ASCII chỉ có thể lưu trữ 128 ký tự, trong khi Unicode có thể chứa tới 1.114.112 ký tự

ASCII thực sự là một tập hợp con của Unicode (UTF-8), có nghĩa là ASCII và Unicode chia sẻ cùng giá trị số thành ký tự. Điều quan trọng cần lưu ý là việc phân tích tệp có mã hóa ký tự không chính xác có thể dẫn đến lỗi hoặc trình bày sai ký tự. Ví dụ: nếu một tệp được tạo bằng mã hóa UTF-8 và bạn cố phân tích cú pháp tệp đó bằng mã hóa ASCII, nếu có một ký tự nằm ngoài 128 giá trị đó thì sẽ xảy ra lỗi

Loại bỏ các quảng cáo

Mở và đóng tệp bằng Python

Khi muốn làm việc với một tệp, việc đầu tiên cần làm là mở tệp đó. Điều này được thực hiện bằng cách gọi hàm tích hợp sẵn

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
56.
myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
56 có một đối số bắt buộc duy nhất là đường dẫn đến tệp.
myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
56 có một lần trả về, đối tượng tệp

file = open("myfile.txt", "r+") 
file.read()
4

Sau khi bạn mở một tệp, điều tiếp theo cần tìm hiểu là cách đóng tệp đó

Cảnh báo. Bạn phải luôn đảm bảo rằng tệp đang mở được đóng đúng cách. Để tìm hiểu lý do tại sao, hãy xem Tại sao việc đóng tệp trong Python lại quan trọng?

Điều quan trọng cần nhớ là bạn có trách nhiệm đóng tệp. Trong hầu hết các trường hợp, khi chấm dứt ứng dụng hoặc tập lệnh, tệp sẽ bị đóng cuối cùng. Tuy nhiên, không có gì đảm bảo chính xác khi nào điều đó sẽ xảy ra. Điều này có thể dẫn đến hành vi không mong muốn bao gồm rò rỉ tài nguyên. Đây cũng là một cách thực hành tốt nhất trong Python (Pythonic) để đảm bảo rằng mã của bạn hoạt động theo cách được xác định rõ và giảm mọi hành vi không mong muốn

Khi bạn đang thao tác với một tệp, có hai cách bạn có thể sử dụng để đảm bảo rằng tệp được đóng đúng cách, ngay cả khi gặp lỗi. Cách đầu tiên để đóng tệp là sử dụng khối

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
59

file.write("any data")
7

Nếu bạn không biết khối

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
59 là gì, hãy xem Python Exceptions. Một lời giới thiệu

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

f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
01

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
5

Câu lệnh

f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
01 tự động đóng tệp sau khi nó rời khỏi khối
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
01, ngay cả trong trường hợp có lỗi. Tôi thực sự khuyên bạn nên sử dụng câu lệnh
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
01 càng nhiều càng tốt, vì nó cho phép mã sạch hơn và giúp bạn xử lý mọi lỗi không mong muốn dễ dàng hơn

Rất có thể, bạn cũng sẽ muốn sử dụng đối số vị trí thứ hai,

f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
05. Đối số này là một chuỗi chứa nhiều ký tự để thể hiện cách bạn muốn mở tệp. Mặc định và phổ biến nhất là
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
06, đại diện cho việc mở tệp ở chế độ chỉ đọc dưới dạng tệp văn bản

f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
0

Các tùy chọn khác cho các chế độ được ghi lại đầy đủ trực tuyến, nhưng những tùy chọn được sử dụng phổ biến nhất là những tùy chọn sau

Ý nghĩa ký tự

f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
06Mở để đọc (mặc định)
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
08Mở để ghi, cắt bớt (ghi đè) tệp trước
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
09 hoặc
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
10Mở ở chế độ nhị phân (đọc/ghi bằng dữ liệu byte)

Hãy quay lại và nói một chút về các đối tượng tệp. Một đối tượng tập tin là

“một đối tượng hiển thị API hướng tệp (với các phương thức như

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
11 hoặc
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
12) cho tài nguyên cơ bản. " (Nguồn)

Có ba loại đối tượng tệp khác nhau

  • tệp văn bản
  • Tệp nhị phân được đệm
  • Tệp nhị phân thô

Mỗi loại tệp này được xác định trong mô-đun

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
13. Dưới đây là tóm tắt nhanh về cách mọi thứ sắp xếp

Loại bỏ các quảng cáo

Các loại tệp văn bản

Tệp văn bản là tệp phổ biến nhất mà bạn sẽ gặp. Dưới đây là một số ví dụ về cách các tệp này được mở

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
1

Với các loại tệp này,

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
56 sẽ trả về một đối tượng tệp
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
15

>>>

file = open("myfile.txt", "r+") 
file.read()
90

Đây là đối tượng tệp mặc định được trả về bởi

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
56

Các loại tệp nhị phân được đệm

Loại tệp nhị phân được đệm được sử dụng để đọc và ghi tệp nhị phân. Dưới đây là một số ví dụ về cách các tệp này được mở

file = open("myfile.txt", "r+") 
file.read()
91

Với các loại tệp này,

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
56 sẽ trả về đối tượng tệp
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
18 hoặc
Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
19

>>>

file = open("myfile.txt", "r+") 
file.read()
92

Các loại tệp thô

Một loại tệp thô là

“thường được sử dụng như một khối xây dựng cấp thấp cho các luồng văn bản và nhị phân. " (Nguồn)

Do đó nó thường không được sử dụng

Đây là một ví dụ về cách các tệp này được mở

file = open("myfile.txt", "r+") 
file.read()
93

Với các loại tệp này,

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
56 sẽ trả về đối tượng tệp
file = open("myfile.txt", "r+") 
file.read()
901

>>>

file = open("myfile.txt", "r+") 
file.read()
94

Đọc và ghi tệp đã mở

Khi bạn đã mở một tệp, bạn sẽ muốn đọc hoặc ghi vào tệp. Trước hết, hãy đọc một tập tin. Có nhiều phương thức có thể được gọi trên một đối tượng tệp để giúp bạn giải quyết

MethodWhat It Does

file = open("myfile.txt", "r+") 
file.read()
902Điều này đọc từ tệp dựa trên số lượng byte
file = open("myfile.txt", "r+") 
file.read()
903. Nếu không có đối số nào được chuyển hoặc
file = open("myfile.txt", "r+") 
file.read()
904 hoặc
file = open("myfile.txt", "r+") 
file.read()
905 được chuyển thì toàn bộ tệp sẽ được đọc.
file = open("myfile.txt", "r+") 
file.read()
906Điều này đọc tối đa
file = open("myfile.txt", "r+") 
file.read()
903 số ký tự từ dòng. Điều này tiếp tục đến cuối dòng và sau đó quấn lại. Nếu không có đối số nào được chuyển hoặc
file = open("myfile.txt", "r+") 
file.read()
904 hoặc
file = open("myfile.txt", "r+") 
file.read()
905 được chuyển, thì toàn bộ dòng (hoặc phần còn lại của dòng) sẽ được đọc.
file = open("myfile.txt", "r+") 
file.read()
910Điều này đọc các dòng còn lại từ đối tượng tệp và trả về chúng dưới dạng danh sách

Sử dụng cùng một tệp

file = open("myfile.txt", "r+") 
file.read()
46 mà bạn đã sử dụng ở trên, hãy xem qua một số ví dụ về cách sử dụng các phương thức này. Đây là một ví dụ về cách mở và đọc toàn bộ tệp bằng cách sử dụng
file = open("myfile.txt", "r+") 
file.read()
912

>>>

file = open("myfile.txt", "r+") 
file.read()
95

Đây là một ví dụ về cách đọc 5 byte của một dòng mỗi lần bằng phương thức Python

file = open("myfile.txt", "r+") 
file.read()
913

>>>

file = open("myfile.txt", "r+") 
file.read()
96

Đây là một ví dụ về cách đọc toàn bộ tệp dưới dạng danh sách bằng phương thức Python

file = open("myfile.txt", "r+") 
file.read()
910

>>>

file = open("myfile.txt", "r+") 
file.read()
97

Ví dụ trên cũng có thể được thực hiện bằng cách sử dụng

file = open("myfile.txt", "r+") 
file.read()
915 để tạo danh sách ngoài đối tượng tệp

>>>

file = open("myfile.txt", "r+") 
file.read()
98

Loại bỏ các quảng cáo

Lặp lại từng dòng trong tệp

Một điều phổ biến cần làm trong khi đọc tệp là lặp lại từng dòng. Đây là một ví dụ về cách sử dụng phương pháp Python

file = open("myfile.txt", "r+") 
file.read()
913 để thực hiện phép lặp đó

>>>

file = open("myfile.txt", "r+") 
file.read()
99

Một cách khác để bạn có thể lặp lại từng dòng trong tệp là sử dụng phương thức Python

file = open("myfile.txt", "r+") 
file.read()
910 của đối tượng tệp. Hãy nhớ rằng,
file = open("myfile.txt", "r+") 
file.read()
910 trả về một danh sách trong đó mỗi phần tử trong danh sách đại diện cho một dòng trong tệp

>>>

file.write("any data")
50

Tuy nhiên, các ví dụ trên có thể được đơn giản hóa hơn nữa bằng cách lặp lại trên chính đối tượng tệp

>>>

file.write("any data")
51

Cách tiếp cận cuối cùng này mang tính Pythonic hơn và có thể nhanh hơn và hiệu quả hơn về bộ nhớ. Do đó, bạn nên sử dụng cái này để thay thế

Ghi chú. Một số ví dụ trên có chứa

file = open("myfile.txt", "r+") 
file.read()
919.
file = open("myfile.txt", "r+") 
file.read()
920 là để ngăn Python thêm một dòng mới bổ sung vào văn bản đang được in và chỉ in những gì đang được đọc từ tệp

Bây giờ hãy đi sâu vào việc ghi tệp. Đối với việc đọc tệp, các đối tượng tệp có nhiều phương thức hữu ích để ghi vào tệp

MethodWhat It Does

file = open("myfile.txt", "r+") 
file.read()
921This ghi chuỗi vào tệp.
file = open("myfile.txt", "r+") 
file.read()
922Điều này ghi trình tự vào tệp. Không có kết thúc dòng nào được thêm vào mỗi mục trình tự. Tùy thuộc vào bạn để thêm (các) kết thúc dòng thích hợp

Đây là một ví dụ nhanh về việc sử dụng

file = open("myfile.txt", "r+") 
file.read()
923 và
file = open("myfile.txt", "r+") 
file.read()
924

file.write("any data")
52

Làm việc với byte

Đôi khi, bạn có thể cần phải làm việc với các tệp sử dụng chuỗi byte. Điều này được thực hiện bằng cách thêm ký tự

file = open("myfile.txt", "r+") 
file.read()
925 vào đối số
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
05. Tất cả các phương pháp tương tự cho đối tượng tệp được áp dụng. Tuy nhiên, thay vào đó, mỗi phương thức đều mong đợi và trả về một đối tượng
file = open("myfile.txt", "r+") 
file.read()
927

>>>

file.write("any data")
53

Mở tệp văn bản bằng cờ

file = open("myfile.txt", "r+") 
file.read()
928 không thú vị lắm. Giả sử chúng ta có bức ảnh dễ thương này về Jack Russell Terrier (
file = open("myfile.txt", "r+") 
file.read()
929)

Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?
Hình ảnh. CC BY 3. 0 (https. //Commons sáng tạo. org/giấy phép/bởi/3. 0)], từ Wikimedia Commons

Bạn thực sự có thể mở tệp đó bằng Python và kiểm tra nội dung. Do định dạng tệp

file = open("myfile.txt", "r+") 
file.read()
930 được xác định rõ, tiêu đề của tệp là 8 byte được chia nhỏ như thế này

ValueInterpretation

file = open("myfile.txt", "r+") 
file.read()
931Một số “ma thuật” để chỉ ra rằng đây là phần đầu của một ____2932____2933
file = open("myfile.txt", "r+") 
file.read()
932 trong ASCII
file = open("myfile.txt", "r+") 
file.read()
935A kết thúc dòng kiểu DOS
myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
50
file = open("myfile.txt", "r+") 
file.read()
937A ký tự EOF kiểu DOS
file = open("myfile.txt", "r+") 
file.read()
938A kết thúc dòng kiểu Unix
file.write("any data")
78

Chắc chắn rồi, khi bạn mở tệp và đọc từng byte này, bạn có thể thấy rằng đây thực sự là tệp tiêu đề

file = open("myfile.txt", "r+") 
file.read()
930

>>>

file.write("any data")
54

Loại bỏ các quảng cáo

Một ví dụ đầy đủ. file = open("myfile.txt", "r+") file.read() 941

Hãy mang toàn bộ nội dung này về nhà và xem một ví dụ đầy đủ về cách đọc và ghi vào một tệp. Sau đây là một công cụ tương tự như

file = open("myfile.txt", "r+") 
file.read()
942 sẽ chuyển đổi một tệp chứa kết thúc dòng của
myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
50 thành
file.write("any data")
78

Công cụ này được chia thành ba phần chính. Đầu tiên là

file = open("myfile.txt", "r+") 
file.read()
945, chuyển đổi một chuỗi từ kết thúc dòng
myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
50 thành
file.write("any data")
78. Thứ hai là
file = open("myfile.txt", "r+") 
file.read()
948, chuyển đổi một chuỗi chứa
myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
50 ký tự thành
file.write("any data")
78.
file = open("myfile.txt", "r+") 
file.read()
948 cuộc gọi nội bộ
file = open("myfile.txt", "r+") 
file.read()
945. Cuối cùng, có khối
file = open("myfile.txt", "r+") 
file.read()
953, khối này chỉ được gọi khi tệp được thực thi dưới dạng tập lệnh. Hãy nghĩ về nó như hàm
file = open("myfile.txt", "r+") 
file.read()
954 được tìm thấy trong các ngôn ngữ lập trình khác

file.write("any data")
55

Các mẹo và thủ thuật

Bây giờ bạn đã nắm vững kiến ​​thức cơ bản về đọc và ghi tệp, dưới đây là một số mẹo và thủ thuật giúp bạn phát triển kỹ năng của mình

file = open("myfile.txt", "r+") file.read() 955

Thuộc tính

file = open("myfile.txt", "r+") 
file.read()
955 là thuộc tính đặc biệt của module, tương tự như
file = open("myfile.txt", "r+") 
file.read()
957. Nó là

“tên đường dẫn của tệp mà mô-đun được tải từ đó, nếu nó được tải từ một tệp. " (Nguồn

Ghi chú. Để lặp lại,

file = open("myfile.txt", "r+") 
file.read()
955 trả về đường dẫn liên quan đến nơi tập lệnh Python ban đầu được gọi. Nếu bạn cần đường dẫn hệ thống đầy đủ, bạn có thể sử dụng
file = open("myfile.txt", "r+") 
file.read()
959 để lấy thư mục làm việc hiện tại của mã thực thi của bạn

Đây là một ví dụ thực tế. Ở một trong những công việc trước đây của mình, tôi đã thực hiện nhiều thử nghiệm cho một thiết bị phần cứng. Mỗi bài kiểm tra được viết bằng tập lệnh Python với tên tệp tập lệnh kiểm tra được sử dụng làm tiêu đề. Các tập lệnh này sau đó sẽ được thực thi và có thể in trạng thái của chúng bằng thuộc tính đặc biệt

file = open("myfile.txt", "r+") 
file.read()
955. Đây là một cấu trúc thư mục ví dụ

file.write("any data")
56

Đang chạy

file = open("myfile.txt", "r+") 
file.read()
961 tạo ra như sau

file.write("any data")
57

Tôi có thể chạy và nhận trạng thái của tất cả các bài kiểm tra của mình một cách linh hoạt thông qua việc sử dụng thuộc tính đặc biệt

file = open("myfile.txt", "r+") 
file.read()
955

Thêm vào một tập tin

Đôi khi, bạn có thể muốn nối thêm vào tệp hoặc bắt đầu viết ở cuối tệp đã điền. Điều này được thực hiện dễ dàng bằng cách sử dụng ký tự

file = open("myfile.txt", "r+") 
file.read()
963 cho đối số
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
05

file.write("any data")
58

Khi bạn kiểm tra lại

file = open("myfile.txt", "r+") 
file.read()
46, bạn sẽ thấy rằng phần đầu của tệp không thay đổi và
file = open("myfile.txt", "r+") 
file.read()
966 hiện được thêm vào cuối tệp

>>>

file.write("any data")
59

Loại bỏ các quảng cáo

Làm việc với hai tệp cùng một lúc

Đôi khi bạn có thể muốn đọc một tệp và ghi vào một tệp khác cùng một lúc. Nếu bạn sử dụng ví dụ được hiển thị khi bạn đang học cách ghi vào một tệp, nó thực sự có thể được kết hợp thành như sau

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
0

Tạo trình quản lý bối cảnh của riêng bạn

Có thể đến lúc bạn cần kiểm soát tốt hơn đối tượng tệp bằng cách đặt nó bên trong một lớp tùy chỉnh. Khi bạn làm điều này, việc sử dụng câu lệnh

f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
01 không còn có thể được sử dụng trừ khi bạn thêm một vài phương thức kỳ diệu.
file = open("myfile.txt", "r+") 
file.read()
968 và
file = open("myfile.txt", "r+") 
file.read()
969. Bằng cách thêm những thứ này, bạn sẽ tạo ra cái được gọi là trình quản lý ngữ cảnh

file = open("myfile.txt", "r+") 
file.read()
970 được gọi khi gọi câu lệnh
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
01.
file = open("myfile.txt", "r+") 
file.read()
972 được gọi khi thoát khỏi khối câu lệnh
f = open('my_file.txt', 'w+')
file_content = f.read()
f.write('Hello World')
f.close()
01

Đây là một mẫu mà bạn có thể sử dụng để tạo lớp tùy chỉnh của mình

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
1

Bây giờ bạn đã có lớp tùy chỉnh hiện là trình quản lý ngữ cảnh, bạn có thể sử dụng nó tương tự như lớp tích hợp sẵn

myline = "Welcome to entechin.com\n,"Hope we learn something from here\n"
file.writelines(myline)
56

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
2

Đây là một ví dụ tốt. Bạn có nhớ hình ảnh Jack Russell dễ thương mà chúng ta có không? . Đây là một ví dụ về cách làm điều này. Ví dụ này cũng sử dụng trình vòng lặp tùy chỉnh. Nếu bạn không quen thuộc với chúng, hãy xem Python Iterators

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
3

Giờ đây, bạn có thể mở các tệp

file = open("myfile.txt", "r+") 
file.read()
930 và phân tích cú pháp đúng cách bằng trình quản lý ngữ cảnh tùy chỉnh của mình

>>>

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
4

Đừng phát minh lại con rắn

Một số tình huống phổ biến mà bạn có thể gặp phải khi làm việc với tệp. Hầu hết các trường hợp này có thể được xử lý bằng các mô-đun khác. Hai loại tệp phổ biến mà bạn có thể cần phải làm việc là

Pug\r\n
Jack Russell Terrier\r\n
English Springer Spaniel\r\n
German Shepherd\r\n
Staffordshire Bull Terrier\r\n
Cavalier King Charles Spaniel\r\n
Golden Retriever\r\n
West Highland White Terrier\r\n
Boxer\r\n
Border Terrier\r\n
9 và
file = open("myfile.txt", "r+") 
file.read()
978. Real Python đã tập hợp một số bài viết tuyệt vời về cách xử lý những

  • Đọc và ghi tệp CSV bằng Python
  • Làm việc với dữ liệu JSON trong Python

Ngoài ra, có các thư viện tích hợp sẵn mà bạn có thể sử dụng để giúp bạn

  • file = open("myfile.txt", "r+") 
    file.read()
    
    979. đọc và ghi tệp WAV (âm thanh)
  • file = open("myfile.txt", "r+") 
    file.read()
    
    980. đọc và ghi các tệp AIFF và AIFC (âm thanh)
  • file = open("myfile.txt", "r+") 
    file.read()
    
    981. đọc và ghi tập tin Sun AU
  • file = open("myfile.txt", "r+") 
    file.read()
    
    982. đọc và ghi tập tin lưu trữ tar
  • file = open("myfile.txt", "r+") 
    file.read()
    
    983. làm việc với kho lưu trữ ZIP
  • file = open("myfile.txt", "r+") 
    file.read()
    
    984. dễ dàng tạo và phân tích các tệp cấu hình
  • file = open("myfile.txt", "r+") 
    file.read()
    
    985. tạo hoặc đọc các tệp dựa trên XML
  • file = open("myfile.txt", "r+") 
    file.read()
    
    986. đọc và ghi các tệp Microsoft Installer
  • file = open("myfile.txt", "r+") 
    file.read()
    
    987. tạo và phân tích các tệp Mac OS X
    file = open("myfile.txt", "r+") 
    file.read()
    
    988

Có rất nhiều hơn nữa ngoài kia. Ngoài ra, thậm chí còn có nhiều công cụ của bên thứ ba hơn trên PyPI. Một số cái phổ biến như sau

  • file = open("myfile.txt", "r+") 
    file.read()
    
    989. bộ công cụ PDF
  • file = open("myfile.txt", "r+") 
    file.read()
    
    990. đọc và ghi tệp Excel
  • file = open("myfile.txt", "r+") 
    file.read()
    
    991. đọc và thao tác hình ảnh

Loại bỏ các quảng cáo

Bạn là một thuật sĩ tập tin Harry

Bạn làm được rồi. Bây giờ bạn đã biết cách làm việc với các tệp bằng Python, bao gồm một số kỹ thuật nâng cao. Làm việc với các tệp trong Python giờ đây sẽ dễ dàng hơn bao giờ hết và là một cảm giác bổ ích khi bạn bắt đầu làm việc đó

Trong hướng dẫn này, bạn đã học

  • tập tin là gì
  • Cách mở và đóng tệp đúng cách
  • Cách đọc và ghi tệp
  • Một số kỹ thuật nâng cao khi làm việc với tệp
  • Một số thư viện để làm việc với các loại tệp phổ biến

Nếu bạn có bất kỳ câu hỏi nào, hãy đánh chúng tôi trong phần bình luận

Lấy bài kiểm tra. Kiểm tra kiến ​​thức của bạn với bài kiểm tra tương tác “Đọc và ghi tệp bằng Python” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian

Lấy bài kiểm tra "

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Đọc và ghi tệp bằng Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

Gửi cho tôi thủ thuật Python »

Giới thiệu về James Mertz

Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?
Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

James là một nhà phát triển Python đam mê tại Phòng thí nghiệm Động cơ phản lực của NASA, người cũng viết bài cho Real Python

» Thông tin thêm về James


Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

Aldren

Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

David

Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Làm thế nào để bạn mở một tệp cho cả đọc và viết bằng python?

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Làm thế nào bạn có thể mở một tệp để đọc và viết bằng Python, hãy đưa ra một ví dụ?

Mở tệp bằng Python . 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. 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 r , viết w hay nối a vào tệp. Python has a built-in open() function to open a file. This function returns a file object, also called a handle, as it is used to read or modify the file accordingly. We can specify the mode while opening a file. In mode, we specify whether we want to read r , write w or append a to the file.

Chế độ truy cập tệp nào cho phép mở một tệp để đọc và ghi?

“wb+” – Mở cho cả đọc và viết ở chế độ nhị phân . Nếu tệp tồn tại, nội dung của nó sẽ bị ghi đè. Nếu tệp không tồn tại, nó sẽ được tạo.

Chức năng nào cho phép đọc và ghi tệp trong Python?

Đây là một số hàm trong Python cho phép bạn đọc và ghi vào tệp. .
đọc(). Hàm này đọc toàn bộ tệp và trả về một chuỗi
dòng đọc (). Hàm này đọc các dòng từ tệp đó và trả về dưới dạng một chuỗi. .
đường đọc (). Hàm này trả về một danh sách trong đó mỗi phần tử là một dòng của tệp đó