Hướng dẫn python read and write file at the same time - python đọc và ghi tệp cùng một lúc

Tôi đang cố gắng mở một tệp văn bản, đọc nó và sau khi sử dụng hàm regex để tìm dòng nào để chỉnh sửa, sửa đổi tệp văn bản của tôi. Tuy nhiên, điều xảy ra là sau khi tìm các dòng và chỉnh sửa chúng, tôi không thể viết lại nội dung đã sửa đổi trong tệp văn bản.

remove_commas = re.compile["House"]
answer = {}

global line1

with open["\DEMO_houses.txt", "r"] as inp:

    for line in inp:
        if remove_commas.match[line]:

            line1 = line.replace[',', '']
            print line1

with open["DEMO_houses.txt", "w"] as document1:
        document1.write[line1]

Điều xảy ra là nó chỉ xóa tệp văn bản của tôi và chỉ ghi dòng đầu tiên được sửa đổi.

Tệp văn bản là một cái gì đó như thế này:

Street : Blue, Red
House: Big, enough
Garden : green, not green

Và trong tệp văn bản mới, tôi cần một cái gì đó như:

Street : Blue, Red
House: Big enough
Garden : green, not green

Nếu bất cứ ai có thể giúp tôi, tôi sẽ thực sự đánh giá cao nó. Cảm ơn

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Đọc và ghi các tập tin bằng Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Reading and Writing Files in Python

Làm thế nào để bạn đọc và viết một tập tin đồng thời trong Python?

Có 6 chế độ truy cập trong Python ..

  • Chỉ đọc ['r']: Mở tệp văn bản để đọc. ....
  • Đọc và viết ['R+']: Mở tệp để đọc và viết. ....
  • Chỉ viết ['W']: Mở tệp để viết. ....

Viết và đọc ['W+']: Mở tệp để đọc và viết. ....

Chỉ nối thêm ['A']: Mở tệp để viết ..

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

Có nhiều chế độ để mở một tập tin:.

R - Mở tệp ở chế độ đọc ..

  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.] metadata about the contents of the file [file name, size, type, and so on]
  2. Dữ liệu: Nội dung của tệp được viết bởi người tạo hoặc trình chỉnh sửa contents of the file as written by the creator or editor
  3. Kết thúc tệp [EOF]: ký tự đặc biệt cho biết phần cuối của tệp special character that indicates the end of the file

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

/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
0 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 phải hàng ngà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
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
1 hoặc
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
2.

Đường dẫn tập tin

Khi bạn truy cập một tệp trên một hệ điều hành, một đường dẫn tệp được yêu cầu. Đường dẫn tệp là một chuỗi đại diện cho vị trí của một tệp. Nó 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 phía trước
    /
    │
    ├── path/
    |   │
    |   ├── to/  ← Your current working directory [cwd] is here
    |   │   └── cats.gif  ← Accessing this file
    |   │
    |   └── dog_breeds.txt
    |
    └── animals.csv
    
    3 [UNIX] hoặc Backslash
    /
    │
    ├── path/
    |   │
    |   ├── to/  ← Your current working directory [cwd] is here
    |   │   └── cats.gif  ← Accessing this file
    |   │
    |   └── dog_breeds.txt
    |
    └── animals.csv
    
    4 [Windows]
    the file folder location on the file system where subsequent folders are separated by a forward slash
    /
    │
    ├── path/
    |   │
    |   ├── to/  ← Your current working directory [cwd] is here
    |   │   └── cats.gif  ← Accessing this file
    |   │
    |   └── dog_breeds.txt
    |
    └── animals.csv
    
    3 [Unix] or backslash
    /
    │
    ├── path/
    |   │
    |   ├── to/  ← Your current working directory [cwd] is here
    |   │   └── cats.gif  ← Accessing this file
    |   │
    |   └── dog_breeds.txt
    |
    └── animals.csv
    
    4 [Windows]
  2. Tên tệp: Tên thực của tệp the actual name of the file
  3. Tiện ích mở rộng: Phần cuối của đường dẫn tệp được ưu tiên với một khoảng thời gian [
    /
    │
    ├── path/
    |   │
    |   ├── to/  ← Your current working directory [cwd] is here
    |   │   └── cats.gif  ← Accessing this file
    |   │
    |   └── dog_breeds.txt
    |
    └── animals.csv
    
    5] được sử dụng để chỉ ra loại tệp
    the end of the file path pre-pended with a period [
    /
    │
    ├── path/
    |   │
    |   ├── to/  ← Your current working directory [cwd] is here
    |   │   └── cats.gif  ← Accessing this file
    |   │
    |   └── dog_breeds.txt
    |
    └── animals.csv
    
    5] used to indicate the file type

Ở đây, một ví dụ nhanh chóng. Hãy nói rằng bạn có một tệp nằm trong cấu trúc tệp như thế này:

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv

Hãy nói rằng bạn muốn truy cập vào tệp

/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
6 và vị trí hiện tại của bạn nằm trong cùng thư mục với
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
7. Để truy cập tệp, bạn cần đi qua thư mục
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
7 và sau đó là thư mục
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
9, cuối cùng đến tệp
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
6. Đường dẫn thư mục là
/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv
1. Tên tệp là
/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv
2. Phần mở rộng tệp là
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
0. Vì vậy, con đường đầy đủ là
/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv
4.

Bây giờ, hãy để nói rằng vị trí hiện tại hoặc thư mục làm việc hiện tại của bạn [CWD] nằm trong thư mục

/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
9 của cấu trúc thư mục ví dụ của chúng tôi. Thay vì đề cập đến
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
6 bằng đường dẫn đầy đủ của
/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv
4, tệp có thể được tham chiếu đơn giản bằng tên tệp và tiện ích mở rộng
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
6.

/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv

Nhưng còn

/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv
9 thì sao? Làm thế nào bạn sẽ truy cập vào đó mà không cần sử dụng đường dẫn đầy đủ? Bạn có thể sử dụng DOT đôi ký tự đặc biệt [
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] để di chuyển một thư mục lên. Điều này có nghĩa 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
1 sẽ tham chiếu tệp
/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv
9 từ thư mục của
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
9:

/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv

DOT đôi [

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] có thể được xích lại với nhau để vượt qua nhiều thư mục trên thư mục hiện tại. Ví dụ: để truy cậ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
5 từ thư mục
/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
9, bạn sẽ sử dụng
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.

Kết thúc dòng

Một vấn đề thường gặp phải 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ừ trở lại trong kỷ nguyên mã Morse, khi một ký hiệu ủng hộ cụ thể được sử dụng để truyền đạt sự kết thúc của việc truyền hoặc kết thúc của một dòng.

Sau đó, điều này đã được tiêu chuẩn hóa cho các nhà giao dịch từ xa bởi 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]. ASA tiêu chuẩn nói rằng các kết thúc dòng nên sử dụng trình tự trả lại vận chuyể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
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] và các ký tự nguồn cấp dữ liệu dòng [
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 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
1] [
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 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
3]. Tuy nhiên, tiêu chuẩn ISO cho phép các ký tự
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 hoặc chỉ là ký tự
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.

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

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 để chỉ ra một dòng mới, trong khi các phiên bản UNIX và MAC mới hơn chỉ sử dụng ký tự
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. Điều này có thể gây ra một số biến chứng khi bạn xử lý các tệp trên một hệ điều hành khác với nguồn tệp. Ở đây, một ví dụ nhanh chóng. Hãy nói rằng chúng tôi kiểm tra tệp
/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv
9 đượ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 giải thích trên một thiết bị UNIX khác nhau:

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

Điều này có thể làm cho việc lặp lại trên mỗi dòng có vấn đề và bạn có thể cần phải 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ột mã hóa là một bản dịch từ dữ liệu byte sang các 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ố để thể hiện một ký tự. Hai mã hóa phổ biến nhất là các đị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 có chung số lượng với các giá trị ký tự. Điều quan trọng cần lưu ý là việc phân tích một 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 về ký tự. Ví dụ: nếu một tệp được tạo bằng mã hóa UTF-8 và bạn cố gắng phân tích nó bằng mã hóa ASCII, nếu có một ký tự nằm ngoài 128 giá trị đó, thì sẽ bị lỗi.

Mở và đóng một tập tin trong Python

Khi bạn muốn làm việc với một tệp, điều đầu tiên cần làm là mở nó. Điều này được thực hiện bằng cách gọi chức năng tích hợ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
9.
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 có một đối số bắt buộc duy nhất là đường dẫn đến 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
9 có một lần trả về duy nhất, đối tượng tệp:

file = open['dog_breeds.txt']

Sau khi bạn mở một tập tin, điều tiếp theo để học là làm thế nào để đóng nó.

Điều quan trọng cần nhớ là 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, cuối cùng một tệp sẽ được đóng. Tuy nhiên, không có gì đảm bảo khi chính xác đ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. Nó cũng là một thực tiễn 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 bất kỳ hành vi không mong muốn nào.

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

file = open['dog_breeds.txt']
2:

reader = open['dog_breeds.txt']
try:
    # Further file processing goes here
finally:
    reader.close[]

Nếu bạn không quen thuộc với khối

file = open['dog_breeds.txt']
2 là gì, hãy xem các ngoại lệ của Python: Giới thiệu.

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

file = open['dog_breeds.txt']
4:

Street : Blue, Red
House: Big, enough
Garden : green, not green
0

Câu lệnh

file = open['dog_breeds.txt']
4 tự động chăm sóc việc đóng tệp sau khi nó rời khỏi khối
file = open['dog_breeds.txt']
4, ngay cả trong trường hợp lỗi. Tôi thực sự khuyên bạn nên sử dụng câu lệnh
file = open['dog_breeds.txt']
4 càng nhiều càng tốt, vì nó cho phép mã sạch hơn và giúp xử lý mọi lỗi bất ngờ dễ dàng hơn cho bạn.

Nhiều khả năng, bạn cũng sẽ muốn sử dụng đối số vị trí thứ hai,

file = open['dog_breeds.txt']
8. Đố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à
file = open['dog_breeds.txt']
9, đại diện cho việc mở tệp ở chế độ chỉ đọc dưới dạng tệp văn bản:

Street : Blue, Red
House: Big, enough
Garden : green, not green
1

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

Tính cáchNghĩa
file = open['dog_breeds.txt']
9
Mở để đọc [mặc định]
reader = open['dog_breeds.txt']
try:
    # Further file processing goes here
finally:
    reader.close[]
1
Mở để viết, cắt ngắn [ghi đè] tệp trước
reader = open['dog_breeds.txt']
try:
    # Further file processing goes here
finally:
    reader.close[]
2 hoặc
reader = open['dog_breeds.txt']
try:
    # Further file processing goes here
finally:
    reader.close[]
3
Mở ở chế độ nhị phân [đọc/ghi bằng dữ liệu byte]

Hãy để Lừa 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 là:

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

reader = open['dog_breeds.txt']
try:
    # Further file processing goes here
finally:
    reader.close[]
4 hoặc
reader = open['dog_breeds.txt']
try:
    # Further file processing goes here
finally:
    reader.close[]
5] cho một 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
  • Các tập tin nhị phân đệm
  • Tập tin nhị phân thô

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

reader = open['dog_breeds.txt']
try:
    # Further file processing goes here
finally:
    reader.close[]
6. Ở đây, một bản tóm tắt nhanh chóng về cách mọi thứ xếp hàng.

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ở:

Street : Blue, Red
House: Big, enough
Garden : green, not green
2

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

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 sẽ trả về đối tượng tệp
reader = open['dog_breeds.txt']
try:
    # Further file processing goes here
finally:
    reader.close[]
8:

>>>

Street : Blue, Red
House: Big, enough
Garden : green, not green
3

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

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.

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

Một loại tệp nhị phân được đệm được sử dụng để đọc và viết các 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ở:

Street : Blue, Red
House: Big, enough
Garden : green, not green
4

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

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 sẽ trả về đối tượng tệp
Street : Blue, Red
House: Big, enough
Garden : green, not green
01 hoặc
Street : Blue, Red
House: Big, enough
Garden : green, not green
02:

>>>

Street : Blue, Red
House: Big, enough
Garden : green, not green
5

Đây là đối tượng tệp mặc định được trả về bởi
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.

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

Một loại tệp nhị phân được đệm được sử dụng để đọc và viết các 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ở:

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

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 sẽ trả về đối tượng tệp
Street : Blue, Red
House: Big, enough
Garden : green, not green
01 hoặc
Street : Blue, Red
House: Big, enough
Garden : green, not green
02:

Các loại tệp thô

Street : Blue, Red
House: Big, enough
Garden : green, not green
6

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

>>>

Street : Blue, Red
House: Big, enough
Garden : green, not green
7

Đây là đối tượng tệp mặc định được trả về bởi
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.

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

Một loại tệp nhị phân được đệm được sử dụng để đọc và viết các 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ở:Với các loại tệp này,
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 sẽ trả về đối tượng tệp
Street : Blue, Red
House: Big, enough
Garden : green, not green
01 hoặc
Street : Blue, Red
House: Big, enough
Garden : green, not green
02:
Các loại tệp thôMột loại tệp thô là:
Nói chung, được sử dụng như một khối xây dựng cấp thấp cho các luồng nhị phân và văn bản. [Nguồn]Do đó, nó thường không được sử dụng.
Ở đây, một ví dụ về cách các tệp này được mở:Với các loại tệp này,
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 sẽ trả về đối tượng tệp
Street : Blue, Red
House: Big, enough
Garden : green, not green
04:

Đọc và viết các tệp đã mở

>>>

Street : Blue, Red
House: Big, enough
Garden : green, not green
8

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

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.

>>>

Street : Blue, Red
House: Big, enough
Garden : green, not green
9

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

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.

>>>

Street : Blue, Red
House: Big enough
Garden : green, not green
0

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

Street : Blue, Red
House: Big, enough
Garden : green, not green
18 để tạo danh sách ra khỏi đối tượng tệp:

>>>

Street : Blue, Red
House: Big enough
Garden : green, not green
1

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

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

Street : Blue, Red
House: Big, enough
Garden : green, not green
16 để thực hiện phép lặp đó:

>>>

Street : Blue, Red
House: Big enough
Garden : green, not green
2

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

Street : Blue, Red
House: Big, enough
Garden : green, not green
13 của đối tượng tệp. Hãy nhớ rằng,
Street : Blue, Red
House: Big, enough
Garden : green, not green
13 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:

>>>

Street : Blue, Red
House: Big enough
Garden : green, not green
3

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 trên chính đối tượng tệp:

>>>

Street : Blue, Red
House: Big enough
Garden : green, not green
4

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

Bây giờ, hãy để Lặn đi vào các tập tin viết. Cũng như đọ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:

Phương phápNhững gì nó làm
Street : Blue, Red
House: Big, enough
Garden : green, not green
22
Điều này ghi chuỗi vào tệp.
Street : Blue, Red
House: Big, enough
Garden : green, not green
23
Điều này viết chuỗi vào tệp. Không có kết thúc dòng được nối vào từng mục trình tự. Nó tùy thuộc vào bạn để thêm [các] kết thúc dòng thích hợp.

Ở đây, một ví dụ nhanh về việc sử dụng

Street : Blue, Red
House: Big, enough
Garden : green, not green
24 và
Street : Blue, Red
House: Big, enough
Garden : green, not green
25:

Street : Blue, Red
House: Big enough
Garden : green, not green
5

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ự

Street : Blue, Red
House: Big, enough
Garden : green, not green
26 vào đối số
file = open['dog_breeds.txt']
8. Tất cả các phương thức tương tự cho đối tượng tệp áp dụng. Tuy nhiên, mỗi phương thức mong đợi và trả về một đối tượng
Street : Blue, Red
House: Big, enough
Garden : green, not green
28 thay thế:

>>>

Street : Blue, Red
House: Big enough
Garden : green, not green
6

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

Street : Blue, Red
House: Big, enough
Garden : green, not green
29 không thú vị. Hãy nói rằng chúng ta có bức ảnh dễ thương này về một con chó sục Jack Russell [
Street : Blue, Red
House: Big, enough
Garden : green, not green
30]:

Hình ảnh: CC by 3.0 [//creativecommons.org/licenses/by/3.0]], từ Wikimedia Commons

Bạn thực sự có thể mở tập tin đó trong Python và kiểm tra nội dung! Vì định dạng tệp

Street : Blue, Red
House: Big, enough
Garden : green, not green
31 được xác định rõ, tiêu đề của tệp là 8 byte bị chia nhỏ như thế này:

Giá trịDiễn dịch
Street : Blue, Red
House: Big, enough
Garden : green, not green
32
Một số ma thuật "để chỉ ra rằng đây là sự khởi đầu của một
Street : Blue, Red
House: Big, enough
Garden : green, not green
33
Street : Blue, Red
House: Big, enough
Garden : green, not green
34
Street : Blue, Red
House: Big, enough
Garden : green, not green
33 trong ASCII
Street : Blue, Red
House: Big, enough
Garden : green, not green
36
Một dòng kiểu DOS kết thú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
3
Street : Blue, Red
House: Big, enough
Garden : green, not green
38
Một nhân vật EOF kiểu DOS
Street : Blue, Red
House: Big, enough
Garden : green, not green
39
Một dòng kiểu UNIX kết thú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
1

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

Street : Blue, Red
House: Big, enough
Garden : green, not green
31:

>>>

Street : Blue, Red
House: Big enough
Garden : green, not green
7

Một ví dụ đầy đủ:
Street : Blue, Red
House: Big, enough
Garden : green, not green
42

Hãy để Lừa mang toàn bộ điều này về nhà và xem xét một ví dụ đầy đủ về cách đọc và ghi vào một tập tin. Sau đây là công cụ giống như

Street : Blue, Red
House: Big, enough
Garden : green, not green
43 sẽ chuyển đổi một tệp chứa các kết thúc dòng của
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 thà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.

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

Street : Blue, Red
House: Big, enough
Garden : green, not green
46, chuyển đổi một chuỗi từ các kết thúc dòng ____73 thà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. Thứ hai là
Street : Blue, Red
House: Big, enough
Garden : green, not green
49, chuyển đổi một chuỗi chứa
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 ký tự thà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.
Street : Blue, Red
House: Big, enough
Garden : green, not green
49 gọi
Street : Blue, Red
House: Big, enough
Garden : green, not green
46 trong nội bộ. Cuối cùng, có khối
Street : Blue, Red
House: Big, enough
Garden : green, not green
54, chỉ được gọi là khi tệp được thực thi dưới dạng tập lệnh. Hãy nghĩ về nó như là hàm
Street : Blue, Red
House: Big, enough
Garden : green, not green
55 được tìm thấy trong các ngôn ngữ lập trình khác.

Street : Blue, Red
House: Big enough
Garden : green, not green
8

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

Bây giờ bạn đã thành thạo những điều cơ bản về đọc và viết các tập tin, đâ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.

Street : Blue, Red
House: Big, enough
Garden : green, not green
56

Thuộc tính

Street : Blue, Red
House: Big, enough
Garden : green, not green
56 là một thuộc tính đặc biệt của các mô -đun, tương tự như
Street : Blue, Red
House: Big, enough
Garden : green, not green
58. Nó là:

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

Ở đây, một ví dụ thế giới thực. Trong một trong những công việc trước đây của tôi, tôi đã thực hiện nhiều bài kiểm tra 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 thử nghiệm đượ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

Street : Blue, Red
House: Big, enough
Garden : green, not green
56. Ở đây, một cấu trúc thư mục ví dụ:

Street : Blue, Red
House: Big enough
Garden : green, not green
9

Chạy

Street : Blue, Red
House: Big, enough
Garden : green, not green
60 tạo ra những như sau:

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv
0

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 của

Street : Blue, Red
House: Big, enough
Garden : green, not green
56.

Nối vào một tập tin

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

Street : Blue, Red
House: Big, enough
Garden : green, not green
62 cho đối số
file = open['dog_breeds.txt']
8:

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv
1

Khi bạn kiểm tra lại

/
│
├── path/  ← Referencing this parent folder
|   │
|   ├── to/  ← Current working directory [cwd]
|   │   └── cats.gif
|   │
|   └── dog_breeds.txt  ← Accessing this file
|
└── animals.csv
9, bạn sẽ thấy rằng phần đầu của tệp không thay đổi và
Street : Blue, Red
House: Big, enough
Garden : green, not green
65 hiện được thêm vào cuối tệp:

>>>

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv
2

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

Có những lúc 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, thì nó thực sự có thể được kết hợp thành các vấn đề sau:

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv
3

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

Có thể đến lúc bạn sẽ 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, sử dụng câu lệnh

file = open['dog_breeds.txt']
4 không còn có thể được sử dụng trừ khi bạn thêm một vài phương pháp ma thuật:
Street : Blue, Red
House: Big, enough
Garden : green, not green
67 và
Street : Blue, Red
House: Big, enough
Garden : green, not green
68. Bằng cách thêm những thứ này, bạn sẽ tạo ra cái mà người ta gọi là người quản lý ngữ cảnh.

Street : Blue, Red
House: Big, enough
Garden : green, not green
69 được gọi khi gọi câu lệnh
file = open['dog_breeds.txt']
4.
Street : Blue, Red
House: Big, enough
Garden : green, not green
71 được gọi khi thoát khỏi khối tuyên bố
file = open['dog_breeds.txt']
4.

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

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv
4

Bây giờ bạn đã có lớp tùy chỉnh của mình hiện là người quản lý ngữ cảnh, bạn có thể sử dụng nó tương tự 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
9 tích hợp:

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv
5

Đây là một ví dụ tốt. Bạn có nhớ hình ảnh Jack Russell dễ thương mà chúng tôi đã có không? Có lẽ bạn muốn mở các tệp

Street : Blue, Red
House: Big, enough
Garden : green, not green
31 khác nhưng không muốn phân tích tệp tiêu đề mỗi lần. Ở đây, một ví dụ về cách làm điều này. Ví dụ này cũng sử dụng trình lặp tùy chỉnh. Nếu bạn không quen thuộc với họ, hãy xem Python Iterators:

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv
6

Bây giờ bạn có thể mở các tệp

Street : Blue, Red
House: Big, enough
Garden : green, not green
31 và phân tích đúng chúng bằng cách sử dụng Trình quản lý bối cảnh tùy chỉnh của bạn:

>>>

/
│
├── path/
|   │
│   ├── to/
│   │   └── cats.gif
│   │
│   └── dog_breeds.txt
|
└── animals.csv
7

Don lồng phát minh lại con rắn

Có những tình huống phổ biến mà bạn có thể gặp phải khi làm việc với các 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 bạn có thể cần làm việc là

/
│
├── path/
|   │
|   ├── to/  ← Your current working directory [cwd] is here
|   │   └── cats.gif  ← Accessing this file
|   │
|   └── dog_breeds.txt
|
└── animals.csv
2 và
Street : Blue, Red
House: Big, enough
Garden : green, not green
77. Real Python đã kết hợp một số bài viết tuyệt vời về cách xử lý những điều này:

  • Đọc và viết các 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 ngoài kia mà bạn có thể sử dụng để giúp bạn:

  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    78: Đọc và ghi các tệp WAV [âm thanh]
    : read and write WAV files [audio]
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    79: Đọc và viết tệp AIFF và AIFC [âm thanh]
    : read and write AIFF and AIFC files [audio]
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    80: Đọc và viết các tệp Sun AU
    : read and write Sun AU files
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    81: Đọc và ghi các tệp lưu trữ tar
    : read and write tar archive files
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    82: Làm việc với kho lưu trữ zip
    : work with ZIP archives
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    83: Dễ dàng tạo và phân tích các tệp cấu hình
    : easily create and parse configuration files
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    84: Tạo hoặc đọc các tệp dựa trên XML
    : create or read XML based files
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    85: Đọc và ghi các tệp trình cài đặt Microsoft
    : read and write Microsoft Installer files
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    86: Tạo và phân tích các tệp Mac OS X
    Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    87
    : generate and parse Mac OS X
    Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    87 files

Có rất nhiều điều ngoài kia. Ngoài ra, thậm chí còn có nhiều công cụ bên thứ ba có sẵn trên PYPI. Một số người phổ biến là như sau:

  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    88: Bộ công cụ PDF
    : PDF toolkit
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    89: Đọc và ghi các tệp Excel
    : read and write Excel files
  • Street : Blue, Red
    House: Big, enough
    Garden : green, not green
    
    90: Đọc và thao tác hình ảnh
    : image reading and manipulation

Bạn là một pháp 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 với 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 bây giờ 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 thực hiện nó.

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

  • Tệp 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 các 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, hãy đánh chúng tôi trong các ý kiến.

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Đọc và ghi các tập tin bằng Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Reading and Writing Files in Python

Làm thế nào để bạn đọc và viết một tập tin đồng thời trong Python?

Có 6 chế độ truy cập trong Python ...
Chỉ đọc ['r']: Mở tệp văn bản để đọc. ....
Đọc và viết ['R+']: Mở tệp để đọc và viết. ....
Chỉ viết ['W']: Mở tệp để viết. ....
Viết và đọc ['W+']: Mở tệp để đọc và viết. ....
Chỉ nối thêm ['A']: Mở tệp để viết ..

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

Có nhiều chế độ để mở một tập tin:..
R - Mở tệp ở chế độ đọc ..
W - Mở hoặc tạo tệp văn bản ở chế độ ghi ..
A - Mở một tệp ở chế độ Phụ lục ..
R+ - Mở một tệp ở cả chế độ đọc và ghi ..
A+ - Mở một tệp ở cả chế độ đọc và ghi ..
W+ - Mở một tệp ở cả chế độ đọc và ghi ..

Tôi có thể đọc một tập tin trong khi nó đang được viết không?

Nhiều khả năng, bạn sẽ phải làm cho chương trình của mình mở tệp, đọc một đoạn nhỏ, đóng tệp và sau đó đợi một chút trước khi đọc lại.Ngay cả sau đó, không có gì đảm bảo rằng bạn sẽ không mở tệp khi quá trình viết cố gắng viết.you'll have to make your program open the file, read a small chunk, close the file, and then wait for a bit before reading again. Even then, there's no guarantee that you won't have the file open when the writing process tries to write.

Chế độ+ trong Python là gì?

+ Thêm đọc hoặc ghi vào chế độ mở hiện có, AKA Chế độ cập nhật.R có nghĩa là đọc tệp;R+ có nghĩa là đọc và viết tập tin.W có nghĩa là viết tệp;W+ có nghĩa là đọc và viết tập tin.A có nghĩa là viết tập tin, chế độ nối;A+ có nghĩa là đọc và ghi tệp, chế độ nối.reading and writing file, append mode.

Bài Viết Liên Quan

Chủ Đề