Hướng dẫn how to read a path in python - cách đọc đường dẫn trong python

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ông thức nấu ăn thực tế để làm việc với các tệp trong 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: Practical Recipes for Working With Files in Python

Show

Python có một số mô-đun và chức năng tích hợp để xử lý các tệp. Các chức năng này được trải ra trên một số mô -đun như

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
5,
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
6,
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
7 và
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8, để đặt tên cho một số. Bài viết này tập hợp ở một nơi nhiều chức năng bạn cần biết để thực hiện các hoạt động phổ biến nhất trên các tệp trong Python.

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

  • Truy xuất thuộc tính tệp
  • Tạo thư mục
  • Khớp các mẫu trong tên tệp
  • Traverse Danh bạ cây
  • Tạo các tập tin và thư mục tạm thời
  • Xóa các tệp và thư mục
  • Sao chép, Di chuyển hoặc Đổi tên Tệp và Thư mục
  • Tạo và trích xuất tài liệu lưu trữ zip và tar
  • Mở nhiều tệp bằng mô -đun
    from pathlib import Path
    
    entries = Path('my_directory/')
    for entry in entries.iterdir():
        print(entry.name)
    
    9

Python xông vào với Mở ra (phạm vi) như mô hình

Đọc và ghi dữ liệu vào các tệp bằng Python khá đơn giản. Để làm điều này, trước tiên bạn phải mở các tệp ở chế độ thích hợp. Ở đây, một ví dụ về cách sử dụng Python, với Mở (Mạnh) như mẫu của Google để mở một tệp văn bản và đọc nội dung của nó:

with open('data.txt', 'r') as f:
    data = f.read()

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
00 lấy tên tệp và chế độ làm đối số của nó.
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
01 Mở tệp trong chế độ chỉ đọc. Để ghi dữ liệu vào một tệp, thay vào đó, hãy truyền vào
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
02 dưới dạng đối số: thay vào đó:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)

Trong các ví dụ ở trên,

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
00 mở các tệp để đọc hoặc ghi và trả về một tay cầm tệp (
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
04 trong trường hợp này) cung cấp các phương thức có thể được sử dụng để đọc hoặc ghi dữ liệu vào tệp. Kiểm tra đọc và ghi các tệp trong Python và làm việc với tệp I/O trong Python để biết thêm thông tin về cách đọc và ghi vào các tệp.

Nhận một danh sách thư mục

Giả sử thư mục làm việc hiện tại của bạn có một thư mục con gọi là

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
05 có nội dung sau:

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt

Mô-đun

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
5 tích hợp có một số chức năng hữu ích có thể được sử dụng để liệt kê nội dung thư mục và lọc kết quả. Để có được danh sách tất cả các tệp và thư mục trong một thư mục cụ thể trong hệ thống tập tin, hãy sử dụng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 trong các phiên bản cũ của Python hoặc
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 trong Python 3.x.
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 là phương pháp ưa thích để sử dụng nếu bạn cũng muốn lấy các thuộc tính tệp và thư mục như kích thước tệp và ngày sửa đổi.

Danh sách thư mục trong các phiên bản Python kế thừa

Trong các phiên bản của Python trước Python 3,

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 là phương pháp để sử dụng để có được một danh sách thư mục:

>>>

>>> import os
>>> entries = os.listdir('my_directory/')

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 Trả về danh sách Python chứa tên của các tệp và thư mục con trong thư mục được đưa ra bởi đối số đường dẫn:

>>>

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']

>>> import os
>>> entries = os.listdir('my_directory/')

>>>

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir

>>> import os >>> entries = os.listdir('my_directory/')

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 Trả về danh sách Python chứa tên của các tệp và thư mục con trong thư mục được đưa ra bởi đối số đường dẫn:

Một danh sách thư mục như thế không dễ đọc. In đầu ra của cuộc gọi đến

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 bằng cách sử dụng vòng lặp giúp làm sạch mọi thứ:

>>>

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>

>>> import os
>>> entries = os.listdir('my_directory/')

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 Trả về danh sách Python chứa tên của các tệp và thư mục con trong thư mục được đưa ra bởi đối số đường dẫn:

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir

Một danh sách thư mục như thế không dễ đọc. In đầu ra của cuộc gọi đến

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 bằng cách sử dụng vòng lặp giúp làm sạch mọi thứ:

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)

Danh sách thư mục trong các phiên bản Python hiện đại

Trong các phiên bản hiện đại của Python, một giải pháp thay thế cho

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 là sử dụng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 và
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15.

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 đã được giới thiệu trong Python 3.5 và được ghi lại trong PEP 471.
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 trả về một trình lặp lại trái ngược với danh sách khi được gọi là:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
18 chỉ vào tất cả các mục trong thư mục hiện tại. Bạn có thể lặp qua nội dung của trình lặp và in ra tên tệp:

Chạy mã ở trên tạo ra những điều sau:

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir

Sử dụng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15 hoặc
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 thay vì
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 là cách ưa thích để nhận danh sách thư mục, đặc biệt là khi bạn làm việc với mã cần loại tệp và thông tin thuộc tính tệp.
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15 cung cấp nhiều chức năng xử lý tệp và đường dẫn được tìm thấy trong
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
5 và
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
7, và các phương thức của nó hiệu quả hơn một số phương thức được tìm thấy trong các mô -đun này. Chúng tôi sẽ thảo luận về cách lấy thuộc tính tệp trong thời gian ngắn.

Dưới đây là các chức năng liệt kê thư mục một lần nữa:

Hàm sốSự mô tả
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07
Trả về danh sách tất cả các tệp và thư mục trong một thư mục
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08
Trả về trình lặp của tất cả các đối tượng trong một thư mục bao gồm thông tin thuộc tính tệp
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
47
Trả về trình lặp của tất cả các đối tượng trong một thư mục bao gồm thông tin thuộc tính tệp

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
47

Các chức năng này trả về một danh sách mọi thứ trong thư mục, bao gồm cả thư mục con. Đây có thể không phải lúc nào cũng là hành vi bạn muốn. Phần tiếp theo sẽ chỉ cho bạn cách lọc kết quả từ danh sách thư mục.

Liệt kê tất cả các tệp trong một thư mục

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
1

Phần này sẽ chỉ cho bạn cách in tên của các tệp trong thư mục bằng cách sử dụng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07,
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 và
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15. Để lọc các thư mục và chỉ liệt kê các tệp từ danh sách thư mục được tạo bởi
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07, hãy sử dụng
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
6:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
2

Tại đây, cuộc gọi đến

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 trả về danh sách mọi thứ trong đường dẫn được chỉ định và sau đó danh sách đó được lọc bởi
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
54 để chỉ in ra các tệp và không phải thư mục. Điều này tạo ra đầu ra sau:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
3

Cách dễ dàng hơn để liệt kê các tệp trong thư mục là sử dụng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 hoặc
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
2

Sử dụng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 có lợi thế là trông sạch hơn và dễ hiểu hơn là sử dụng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07, mặc dù nó là một dòng mã dài hơn. Gọi
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
59 trên mỗi mục trong
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
18 trả về
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
61 nếu đối tượng là một tệp. In tên của tất cả các tệp trong thư mục cung cấp cho bạn đầu ra sau:

Tại đây, cách liệt kê các tệp trong một thư mục bằng cách sử dụng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
5

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
2

Tại đây, bạn gọi

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
63 trên mỗi mục được mang lại bởi
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
28. Đầu ra được tạo ra là như nhau:

Mã trên có thể được thực hiện súc tích hơn nếu bạn kết hợp vòng lặp

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
65 và câu lệnh
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
66 thành một biểu thức trình tạo duy nhất. Dan Bader có một bài viết tuyệt vời về biểu thức máy phát và danh sách toàn diện.

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
7

Phiên bản sửa đổi trông như thế này:

Điều này tạo ra chính xác đầu ra giống như ví dụ trước nó. Phần này cho thấy rằng việc lọc các tệp hoặc thư mục sử dụng with open('data.txt', 'w') as f: data = 'some data to be written to the file' f.write(data) 08 và with open('data.txt', 'w') as f: data = 'some data to be written to the file' f.write(data) 15 cảm thấy trực quan hơn và trông sạch hơn so với việc sử dụng with open('data.txt', 'w') as f: data = 'some data to be written to the file' f.write(data) 07 kết hợp với from pathlib import Path entries = Path('my_directory/') for entry in entries.iterdir(): print(entry.name) 6.

Liệt kê các thư mục con

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
8

Để liệt kê các thư mục con thay vì các tệp, hãy sử dụng một trong các phương thức dưới đây. Tại đây, cách sử dụng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 và
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
72:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
9

Thao tác với các đường dẫn hệ thống tập tin theo cách này có thể nhanh chóng trở nên cồng kềnh khi bạn có nhiều cuộc gọi đến

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
73. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
0

Đây là cách sử dụng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
9

Như trong ví dụ liệt kê tệp, ở đây bạn gọi

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
75 trên mỗi mục được trả về bởi
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08. Nếu mục nhập là một thư mục,
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
75 trả về
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
61 và tên thư mục được in ra. Đầu ra giống như trên:

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
2

Đây là cách sử dụng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15:

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
9

Gọi with open('data.txt', 'w') as f: data = 'some data to be written to the file' f.write(data) 75 trên mỗi mục nhập của trình lặp with open('data.txt', 'w') as f: data = 'some data to be written to the file' f.write(data) 81 kiểm tra xem một mục nhập là một tệp hoặc một thư mục. Nếu mục nhập là một thư mục, tên của nó được in ra màn hình và đầu ra được tạo ra giống như tên của ví dụ trước:

Nhận thuộc tính tệp

Python làm cho việc truy xuất các thuộc tính tệp như kích thước tệp và thời gian sửa đổi trở nên dễ dàng. Điều này được thực hiện thông qua

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
82,
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 hoặc
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15.

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 và
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15 Lấy một danh sách thư mục với các thuộc tính tệp được kết hợp. Điều này có thể có khả năng hiệu quả hơn so với sử dụng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
07 để liệt kê các tệp và sau đó nhận thông tin thuộc tính tệp cho mỗi tệp.

Các ví dụ dưới đây cho thấy làm thế nào để có được thời gian các tệp trong

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
21 đã được sửa đổi lần cuối. Đầu ra là trong vài giây:

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
4

>>>

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
08 Trả về một đối tượng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
18. Mỗi mục trong một đối tượng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
18 có phương thức
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
92 lấy thông tin về tệp hoặc thư mục mà nó trỏ đến.
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
92 cung cấp thông tin như kích thước tệp và thời gian sửa đổi cuối cùng. Trong ví dụ trên, mã in ra thuộc tính
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
94, đó là thời gian nội dung của tệp được sửa đổi lần cuối.

>>>

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
5

Trong ví dụ trên, mã các vòng lặp qua đối tượng được trả về bởi

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
28 và truy xuất các thuộc tính tệp thông qua lệnh gọi
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
92 cho mỗi tệp trong danh sách thư mục. Thuộc tính
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
94 trả về giá trị nổi đại diện cho giây kể từ kỷ nguyên. Để chuyển đổi các giá trị được trả về bởi
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
94 cho mục đích hiển thị, bạn có thể viết hàm trợ giúp để chuyển đổi các giây thành đối tượng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
00:

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
6

Điều này trước tiên sẽ nhận được một danh sách các tệp trong

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
05 và các thuộc tính của chúng và sau đó gọi
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
02 để chuyển đổi từng tệp thời gian sửa đổi lần cuối thành một dạng đọc được.
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
02 Sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
04 để chuyển đổi thời gian tính bằng giây thành một chuỗi.

Các đối số được chuyển đến

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
04 như sau:

  • my_directory/
    |
    ├── sub_dir/
    |   ├── bar.py
    |   └── foo.py
    |
    ├── sub_dir_b/
    |   └── file4.txt
    |
    ├── sub_dir_c/
    |   ├── config.py
    |   └── file5.txt
    |
    ├── file1.py
    ├── file2.csv
    └── file3.txt
    
    06: Ngày của tháng
    the day of the month
  • my_directory/
    |
    ├── sub_dir/
    |   ├── bar.py
    |   └── foo.py
    |
    ├── sub_dir_b/
    |   └── file4.txt
    |
    ├── sub_dir_c/
    |   ├── config.py
    |   └── file5.txt
    |
    ├── file1.py
    ├── file2.csv
    └── file3.txt
    
    07: Tháng, ở dạng viết tắt
    the month, in abbreviated form
  • my_directory/
    |
    ├── sub_dir/
    |   ├── bar.py
    |   └── foo.py
    |
    ├── sub_dir_b/
    |   └── file4.txt
    |
    ├── sub_dir_c/
    |   ├── config.py
    |   └── file5.txt
    |
    ├── file1.py
    ├── file2.csv
    └── file3.txt
    
    08: Năm
    the year

Cùng nhau, các chỉ thị này tạo ra đầu ra trông như thế này:

>>>

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
7

Cú pháp để chuyển đổi ngày và thời gian thành chuỗi có thể khá khó hiểu. Để đọc thêm về nó, hãy xem tài liệu chính thức về nó. Một tài liệu tham khảo tiện dụng khác dễ nhớ là http://strftime.org/.

Làm thư mục

Sớm hay muộn, các chương trình bạn viết sẽ phải tạo các thư mục để lưu trữ dữ liệu trong đó.

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
5 và
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8 bao gồm các chức năng để tạo thư mục. Chúng tôi sẽ xem xét những điều này:

Hàm sốSự mô tả
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
11
Tạo một thư mục con
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
12
Tạo ra một hoặc nhiều thư mục
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
13
Tạo nhiều thư mục, bao gồm các thư mục trung gian

Tạo một thư mục duy nhất

Để tạo một thư mục duy nhất, hãy chuyển một đường dẫn đến thư mục dưới dạng tham số đến

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
11:

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
8

Nếu một thư mục đã tồn tại,

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
11 tăng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
16. Ngoài ra, bạn có thể tạo một thư mục bằng cách sử dụng
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8:

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
9

Nếu đường dẫn đã tồn tại,

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
18 sẽ tăng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
16:

>>>

>>> import os
>>> entries = os.listdir('my_directory/')
0

Để tránh các lỗi như thế này, hãy bắt lỗi khi nó xảy ra và cho người dùng của bạn biết:

>>> import os
>>> entries = os.listdir('my_directory/')
1

Ngoài ra, bạn có thể bỏ qua

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
16 bằng cách chuyển đối số
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
21 cho
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
22:

>>> import os
>>> entries = os.listdir('my_directory/')
2

Điều này sẽ không gây ra lỗi nếu thư mục đã tồn tại.

Tạo nhiều thư mục

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
13 tương tự như
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
11. Sự khác biệt giữa hai là không chỉ
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
13 tạo ra các thư mục riêng lẻ, mà còn có thể được sử dụng để tạo ra các cây thư mục. Nói cách khác, nó có thể tạo ra bất kỳ thư mục trung gian cần thiết nào để đảm bảo một đường dẫn đầy đủ tồn tại.

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
13 tương tự như chạy
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
27 trong bash. Ví dụ: để tạo một nhóm các thư mục như
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
28, tất cả những gì bạn phải làm là như sau:

>>> import os
>>> entries = os.listdir('my_directory/')
3

Điều này sẽ tạo ra một cấu trúc thư mục lồng nhau chứa các thư mục 2018, 10 và 05:

>>> import os
>>> entries = os.listdir('my_directory/')
4

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
29 tạo ra các thư mục với quyền mặc định. Nếu bạn cần tạo các thư mục với các quyền khác nhau, hãy gọi
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
29 và vượt qua trong chế độ, bạn muốn các thư mục được tạo trong:

>>> import os
>>> entries = os.listdir('my_directory/')
5

Điều này tạo ra cấu trúc thư mục

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
28 và cung cấp cho chủ sở hữu và người dùng nhóm đọc, viết và thực hiện các quyền. Chế độ mặc định là
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
32 và các bit cho phép tệp của các thư mục mẹ hiện tại không được thay đổi. Để biết thêm chi tiết về quyền tệp và cách áp dụng chế độ, hãy xem tài liệu.

Chạy

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
33 để xác nhận rằng các quyền phù hợp đã được áp dụng:

>>> import os
>>> entries = os.listdir('my_directory/')
6

Điều này in ra một cây thư mục của thư mục hiện tại.

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
33 thường được sử dụng để liệt kê nội dung của các thư mục theo định dạng giống như cây. Truyền các đối số
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
35 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
36 cho nó in ra tên thư mục và thông tin quyền tệp của họ trong một danh sách dọc.
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
35 in ra các quyền của tệp và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
36 tạo ra
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
33 tạo ra một danh sách thẳng đứng mà không có các dòng thụt.

Như bạn có thể thấy, tất cả các thư mục đều có quyền

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
40. Một cách khác để tạo các thư mục là sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
22 từ
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
42:

>>> import os
>>> entries = os.listdir('my_directory/')
7

Chuyển

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
43 đến
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
44 khiến nó tạo ra thư mục
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
45 và bất kỳ thư mục phụ huynh nào cần thiết để làm cho đường dẫn hợp lệ.

Theo mặc định,

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
13 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
44 tăng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
48 nếu thư mục đích đã tồn tại. Hành vi này có thể được ghi đè (kể từ Python 3.2) bằng cách truyền
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
21 làm đối số từ khóa khi gọi mỗi hàm.

Chạy mã ở trên tạo ra cấu trúc thư mục như dưới đây trong một lần:

>>> import os
>>> entries = os.listdir('my_directory/')
4

Tôi thích sử dụng

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8 khi tạo thư mục vì tôi có thể sử dụng cùng một chức năng để tạo các thư mục đơn hoặc lồng nhau.

Kết hợp mẫu tệp

Sau khi nhận được danh sách các tệp trong một thư mục bằng một trong các phương thức ở trên, rất có thể bạn sẽ muốn tìm kiếm các tệp phù hợp với một mẫu cụ thể.

Đây là các phương pháp và chức năng có sẵn cho bạn:

  • my_directory/
    |
    ├── sub_dir/
    |   ├── bar.py
    |   └── foo.py
    |
    ├── sub_dir_b/
    |   └── file4.txt
    |
    ├── sub_dir_c/
    |   ├── config.py
    |   └── file5.txt
    |
    ├── file1.py
    ├── file2.csv
    └── file3.txt
    
    51 và
    my_directory/
    |
    ├── sub_dir/
    |   ├── bar.py
    |   └── foo.py
    |
    ├── sub_dir_b/
    |   └── file4.txt
    |
    ├── sub_dir_c/
    |   ├── config.py
    |   └── file5.txt
    |
    ├── file1.py
    ├── file2.csv
    └── file3.txt
    
    52 Phương thức chuỗi
  • my_directory/
    |
    ├── sub_dir/
    |   ├── bar.py
    |   └── foo.py
    |
    ├── sub_dir_b/
    |   └── file4.txt
    |
    ├── sub_dir_c/
    |   ├── config.py
    |   └── file5.txt
    |
    ├── file1.py
    ├── file2.csv
    └── file3.txt
    
    53
  • my_directory/
    |
    ├── sub_dir/
    |   ├── bar.py
    |   └── foo.py
    |
    ├── sub_dir_b/
    |   └── file4.txt
    |
    ├── sub_dir_c/
    |   ├── config.py
    |   └── file5.txt
    |
    ├── file1.py
    ├── file2.csv
    └── file3.txt
    
    54
  • my_directory/
    |
    ├── sub_dir/
    |   ├── bar.py
    |   └── foo.py
    |
    ├── sub_dir_b/
    |   └── file4.txt
    |
    ├── sub_dir_c/
    |   ├── config.py
    |   └── file5.txt
    |
    ├── file1.py
    ├── file2.csv
    └── file3.txt
    
    55

Mỗi cái được thảo luận dưới đây. Các ví dụ trong phần này sẽ được thực hiện trên một thư mục gọi là

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
56 có cấu trúc sau:

>>> import os
>>> entries = os.listdir('my_directory/')
9

Nếu bạn theo dõi bằng cách sử dụng Bash Shell, bạn có thể tạo cấu trúc thư mục trên bằng các lệnh sau:

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
0

Điều này sẽ tạo thư mục

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
57, thay đổi vào nó và sau đó tạo
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
58. Dòng tiếp theo tạo ra
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
59 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
60 trong
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
58 và dòng cuối cùng tạo ra tất cả các tệp khác bằng cách sử dụng mở rộng. Để tìm hiểu thêm về mở rộng Shell, hãy truy cập trang web này.

Sử dụng các phương thức chuỗi

Python có một số phương pháp tích hợp để sửa đổi và thao tác các chuỗi. Hai trong số các phương pháp này,

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
62 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
63, rất hữu ích khi bạn đang tìm kiếm các mẫu trong tên tệp. Để làm điều này, trước tiên hãy lấy một danh sách thư mục và sau đó lặp lại nó:

>>>

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
1

Mã ở trên tìm thấy tất cả các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
57, lặp lại chúng và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
63 để in ra các tên tệp có phần mở rộng tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
2

Kết hợp mẫu tệp đơn giản bằng cách sử dụng my_directory/ | ├── sub_dir/ | ├── bar.py | └── foo.py | ├── sub_dir_b/ | └── file4.txt | ├── sub_dir_c/ | ├── config.py | └── file5.txt | ├── file1.py ├── file2.csv └── file3.txt 67

Phương pháp chuỗi bị giới hạn trong khả năng phù hợp của chúng.

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67 có các chức năng và phương pháp nâng cao hơn để khớp mẫu. Chúng tôi sẽ xem xét
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
53, một chức năng hỗ trợ việc sử dụng các ký tự đại diện như
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
70 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
71 để khớp với tên tệp. Ví dụ: để tìm tất cả các tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66 trong một thư mục bằng cách sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67, bạn sẽ thực hiện như sau:

>>>

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
3

Mã ở trên tìm thấy tất cả các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
57, lặp lại chúng và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
63 để in ra các tên tệp có phần mở rộng tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

Kết hợp mẫu tệp đơn giản bằng cách sử dụng my_directory/ | ├── sub_dir/ | ├── bar.py | └── foo.py | ├── sub_dir_b/ | └── file4.txt | ├── sub_dir_c/ | ├── config.py | └── file5.txt | ├── file1.py ├── file2.csv └── file3.txt 67

Phương pháp chuỗi bị giới hạn trong khả năng phù hợp của chúng.

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67 có các chức năng và phương pháp nâng cao hơn để khớp mẫu. Chúng tôi sẽ xem xét
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
53, một chức năng hỗ trợ việc sử dụng các ký tự đại diện như
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
70 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
71 để khớp với tên tệp. Ví dụ: để tìm tất cả các tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66 trong một thư mục bằng cách sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67, bạn sẽ thực hiện như sau:

Điều này lặp lại trong danh sách các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
56 và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
75 để thực hiện tìm kiếm ký tự đại diện cho các tệp có phần mở rộng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66.

>>>

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
4

Mã ở trên tìm thấy tất cả các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
57, lặp lại chúng và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
63 để in ra các tên tệp có phần mở rộng tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
5

Kết hợp mẫu tệp đơn giản bằng cách sử dụng my_directory/ | ├── sub_dir/ | ├── bar.py | └── foo.py | ├── sub_dir_b/ | └── file4.txt | ├── sub_dir_c/ | ├── config.py | └── file5.txt | ├── file1.py ├── file2.csv └── file3.txt 67

Phương pháp chuỗi bị giới hạn trong khả năng phù hợp của chúng.

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67 có các chức năng và phương pháp nâng cao hơn để khớp mẫu. Chúng tôi sẽ xem xét
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
53, một chức năng hỗ trợ việc sử dụng các ký tự đại diện như
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
70 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
71 để khớp với tên tệp. Ví dụ: để tìm tất cả các tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66 trong một thư mục bằng cách sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67, bạn sẽ thực hiện như sau:

Điều này lặp lại trong danh sách các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
56 và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
75 để thực hiện tìm kiếm ký tự đại diện cho các tệp có phần mở rộng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66.

Kết hợp mẫu nâng cao hơn

Hãy giả sử bạn muốn tìm các tệp

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66 đáp ứng các tiêu chí nhất định. Ví dụ: bạn chỉ có thể quan tâm đến việc tìm các tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66 có chứa từ
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
79, một số giữa một tập hợp dấu gạch dưới và từ
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
80 trong tên tệp của họ. Một cái gì đó tương tự như
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
81,
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
82 hoặc
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
83.

Sử dụng

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
53, bạn có thể làm theo cách này:

>>>

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
6

Mã ở trên tìm thấy tất cả các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
57, lặp lại chúng và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
63 để in ra các tên tệp có phần mở rộng tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

>>>

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
7

Mã ở trên tìm thấy tất cả các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
57, lặp lại chúng và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
63 để in ra các tên tệp có phần mở rộng tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
2

Kết hợp mẫu tệp đơn giản bằng cách sử dụng

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67

>>>

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
9

Mã ở trên tìm thấy tất cả các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
57, lặp lại chúng và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
63 để in ra các tên tệp có phần mở rộng tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

Kết hợp mẫu tệp đơn giản bằng cách sử dụng

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
0

Phương pháp chuỗi bị giới hạn trong khả năng phù hợp của chúng.

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67 có các chức năng và phương pháp nâng cao hơn để khớp mẫu. Chúng tôi sẽ xem xét
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
53, một chức năng hỗ trợ việc sử dụng các ký tự đại diện như
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
70 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
71 để khớp với tên tệp. Ví dụ: để tìm tất cả các tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66 trong một thư mục bằng cách sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
67, bạn sẽ thực hiện như sau:

>>>

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
1

Mã ở trên tìm thấy tất cả các tệp trong

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
57, lặp lại chúng và sử dụng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
63 để in ra các tên tệp có phần mở rộng tệp
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
66. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

>>> import os
>>> entries = os.listdir('my_directory/')
24 tương tự như
>>> import os
>>> entries = os.listdir('my_directory/')
25 đã thảo luận ở trên. Như bạn có thể thấy,
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8 kết hợp nhiều tính năng tốt nhất của các mô -đun
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
5,
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
6 và
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
88 thành một mô -đun duy nhất, điều này làm cho nó rất vui khi sử dụng.

Tóm lại, đây là một bảng các chức năng mà chúng tôi đã đề cập trong phần này:

Hàm sốSự mô tả
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
52
Kiểm tra xem một chuỗi bắt đầu với một mẫu được chỉ định và trả về
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
61 hoặc
>>> import os
>>> entries = os.listdir('my_directory/')
32
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
51
Kiểm tra xem một chuỗi kết thúc bằng một mẫu được chỉ định và trả về
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
61 hoặc
>>> import os
>>> entries = os.listdir('my_directory/')
32
>>> import os
>>> entries = os.listdir('my_directory/')
36
Kiểm tra xem tên tệp phù hợp với mẫu và trả về
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
61 hay
>>> import os
>>> entries = os.listdir('my_directory/')
32
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
54
Trả về một danh sách các tên tệp phù hợp với một mẫu
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
55
Tìm các mẫu trong tên đường dẫn và trả về một đối tượng máy phát

Trải qua các thư mục và xử lý các tệp

Một nhiệm vụ lập trình phổ biến là đi bộ một cây thư mục và xử lý các tệp trong cây. Hãy để khám phá cách chức năng Python tích hợp

>>> import os
>>> entries = os.listdir('my_directory/')
41 có thể được sử dụng để làm điều này.
>>> import os
>>> entries = os.listdir('my_directory/')
41 được sử dụng để tạo tên tệp trong cây thư mục bằng cách đi bộ trên cây từ trên xuống hoặc từ dưới lên. Đối với mục đích của phần này, chúng tôi sẽ thao túng cây thư mục sau:

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
2

Sau đây là một ví dụ cho bạn biết cách liệt kê tất cả các tệp và thư mục trong cây thư mục bằng cách sử dụng

>>> import os
>>> entries = os.listdir('my_directory/')
41.

>>> import os
>>> entries = os.listdir('my_directory/')
41 Mặc định vượt qua các thư mục theo cách từ trên xuống:

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
3

>>> import os
>>> entries = os.listdir('my_directory/')
41 Trả về ba giá trị trên mỗi lần lặp của vòng lặp:

  1. Tên của thư mục hiện tại

  2. Một danh sách các thư mục trong thư mục hiện tại

  3. Một danh sách các tệp trong thư mục hiện tại

Trên mỗi lần lặp, nó in tên của các thư mục con và tệp mà nó tìm thấy:

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
4

Để vượt qua cây thư mục theo cách từ dưới lên, hãy chuyển trong đối số từ khóa

>>> import os
>>> entries = os.listdir('my_directory/')
46 sang
>>> import os
>>> entries = os.listdir('my_directory/')
41:

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
5

Vượt qua đối số

>>> import os
>>> entries = os.listdir('my_directory/')
46 sẽ tạo ra
>>> import os
>>> entries = os.listdir('my_directory/')
41 in ra các tệp mà nó tìm thấy trong các thư mục con đầu tiên:

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
6

Như bạn có thể thấy, chương trình bắt đầu bằng cách liệt kê nội dung của các thư mục con trước khi liệt kê nội dung của thư mục gốc. Điều này rất hữu ích trong các tình huống mà bạn muốn xóa các tệp và thư mục đệ quy. Bạn sẽ học cách làm điều này trong các phần dưới đây. Theo mặc định,

>>> import os
>>> entries = os.listdir('my_directory/')
50 không bước xuống các liên kết tượng trưng để giải quyết cho các thư mục. Hành vi này có thể được ghi đè bằng cách gọi nó bằng đối số
>>> import os
>>> entries = os.listdir('my_directory/')
51.

Tạo các tập tin và thư mục tạm thời

Python cung cấp một mô -đun tiện dụng để tạo các tệp và thư mục tạm thời được gọi là

>>> import os
>>> entries = os.listdir('my_directory/')
52.

>>> import os
>>> entries = os.listdir('my_directory/')
52 có thể được sử dụng để mở và lưu trữ dữ liệu tạm thời trong một tệp hoặc thư mục trong khi chương trình của bạn đang chạy.
>>> import os
>>> entries = os.listdir('my_directory/')
52 xử lý việc xóa các tệp tạm thời khi chương trình của bạn được thực hiện với chúng.

Tại đây, cách tạo một tệp tạm thời:

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
7

Bước đầu tiên là nhập

>>> import os
>>> entries = os.listdir('my_directory/')
55 từ mô -đun
>>> import os
>>> entries = os.listdir('my_directory/')
52. Tiếp theo, tạo một tệp như đối tượng bằng phương thức
>>> import os
>>> entries = os.listdir('my_directory/')
57 bằng cách gọi nó và chuyển chế độ bạn muốn mở tệp. Điều này sẽ tạo và mở một tệp có thể được sử dụng làm khu vực lưu trữ tạm thời.

Trong ví dụ trên, chế độ là

>>> import os
>>> entries = os.listdir('my_directory/')
58, tạo ra
>>> import os
>>> entries = os.listdir('my_directory/')
52 tạo một tệp văn bản tạm thời ở chế độ ghi. Không cần phải cung cấp cho tệp tạm thời một tên tệp vì nó sẽ bị phá hủy sau khi tập lệnh được thực hiện.

Sau khi ghi vào tệp, bạn có thể đọc từ nó và đóng nó khi bạn xử lý xong. Khi tệp được đóng, nó sẽ bị xóa khỏi hệ thống tập tin. Nếu bạn cần đặt tên cho các tệp tạm thời được tạo bằng

>>> import os
>>> entries = os.listdir('my_directory/')
52, hãy sử dụng
>>> import os
>>> entries = os.listdir('my_directory/')
61.

Các tệp và thư mục tạm thời được tạo bằng

>>> import os
>>> entries = os.listdir('my_directory/')
52 được lưu trữ trong thư mục hệ thống đặc biệt để lưu trữ các tệp tạm thời. Python tìm kiếm một danh sách tiêu chuẩn các thư mục để tìm một danh sách mà người dùng có thể tạo tệp.

Trên Windows, các thư mục là

>>> import os
>>> entries = os.listdir('my_directory/')
63,
>>> import os
>>> entries = os.listdir('my_directory/')
64,
>>> import os
>>> entries = os.listdir('my_directory/')
65 và
>>> import os
>>> entries = os.listdir('my_directory/')
66, theo thứ tự đó. Trên tất cả các nền tảng khác, các thư mục là
>>> import os
>>> entries = os.listdir('my_directory/')
67,
>>> import os
>>> entries = os.listdir('my_directory/')
68 và
>>> import os
>>> entries = os.listdir('my_directory/')
69, theo thứ tự đó. Là phương sách cuối cùng,
>>> import os
>>> entries = os.listdir('my_directory/')
52 sẽ lưu các tệp và thư mục tạm thời trong thư mục hiện tại.

>>> import os
>>> entries = os.listdir('my_directory/')
71 cũng là người quản lý bối cảnh để nó có thể được sử dụng cùng với câu lệnh
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
20. Sử dụng Trình quản lý bối cảnh, hãy tự động xóa và xóa tệp sau khi nó được đọc:

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
8

Điều này tạo ra một tệp tạm thời và đọc dữ liệu từ nó. Ngay sau khi đọc nội dung của tệp, tệp tạm thời được đóng và xóa khỏi hệ thống tệp.

>>> import os
>>> entries = os.listdir('my_directory/')
52 cũng có thể được sử dụng để tạo các thư mục tạm thời. Hãy cùng nhìn vào cách bạn có thể làm điều này bằng cách sử dụng
>>> import os
>>> entries = os.listdir('my_directory/')
74:

>>>

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
9

Gọi

>>> import os
>>> entries = os.listdir('my_directory/')
74 Tạo một thư mục tạm thời trong hệ thống tệp và trả về một đối tượng đại diện cho thư mục này. Trong ví dụ trên, thư mục được tạo bằng trình quản lý ngữ cảnh và tên của thư mục được lưu trữ trong
>>> import os
>>> entries = os.listdir('my_directory/')
76. Dòng thứ ba in ra tên của thư mục tạm thời và
>>> import os
>>> entries = os.listdir('my_directory/')
77 có xác nhận nếu thư mục thực sự được tạo trong hệ thống tệp.

Sau khi người quản lý bối cảnh đi ra khỏi ngữ cảnh, thư mục tạm thời sẽ bị xóa và cuộc gọi đến

>>> import os
>>> entries = os.listdir('my_directory/')
77 trả về
>>> import os
>>> entries = os.listdir('my_directory/')
32, điều đó có nghĩa là thư mục đã bị xóa một cách hoàn hảo.

Xóa các tệp và thư mục

Bạn có thể xóa các tệp, thư mục và toàn bộ các cây thư mục bằng các phương thức được tìm thấy trong các mô -đun

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
5,
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
7 và
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8. Các phần sau đây mô tả cách xóa các tệp và thư mục mà bạn không còn cần.

Xóa các tệp trong Python

Để xóa một tệp duy nhất, hãy sử dụng

>>> import os
>>> entries = os.listdir('my_directory/')
83,
>>> import os
>>> entries = os.listdir('my_directory/')
84. hoặc
>>> import os
>>> entries = os.listdir('my_directory/')
85.

>>> import os
>>> entries = os.listdir('my_directory/')
84 và
>>> import os
>>> entries = os.listdir('my_directory/')
85 giống hệt nhau về mặt ngữ nghĩa. Để xóa một tệp bằng cách sử dụng
>>> import os
>>> entries = os.listdir('my_directory/')
84, hãy làm như sau:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
0

Xóa tệp bằng cách sử dụng

>>> import os
>>> entries = os.listdir('my_directory/')
85 tương tự như cách bạn thực hiện bằng cách sử dụng
>>> import os
>>> entries = os.listdir('my_directory/')
84:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
1

Gọi

>>> import os
>>> entries = os.listdir('my_directory/')
91 hoặc
>>> import os
>>> entries = os.listdir('my_directory/')
92 trên một tệp xóa tệp khỏi hệ thống tập tin. Hai chức năng này sẽ ném
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
48 nếu đường dẫn được truyền cho chúng chỉ vào một thư mục thay vì một tệp. Để tránh điều này, bạn có thể kiểm tra xem những gì bạn đang cố gắng xóa có thực sự là một tệp không và chỉ xóa nó nếu có, hoặc bạn có thể sử dụng xử lý ngoại lệ để xử lý
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
48:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
2

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
54 Kiểm tra xem
>>> import os
>>> entries = os.listdir('my_directory/')
96 có thực sự là một tệp hay không. Nếu có, nó sẽ bị xóa bởi cuộc gọi đến
>>> import os
>>> entries = os.listdir('my_directory/')
84. Nếu
>>> import os
>>> entries = os.listdir('my_directory/')
96 trỏ vào một thư mục, một thông báo lỗi được in vào bảng điều khiển.

Ví dụ sau đây cho thấy cách sử dụng xử lý ngoại lệ để xử lý các lỗi khi xóa các tệp:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
3

Mã trên cố gắng xóa tệp trước khi kiểm tra loại của nó. Nếu

>>> import os
>>> entries = os.listdir('my_directory/')
96 thực sự là một tệp, thì
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
48 được ném được xử lý trong mệnh đề
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
01 và thông báo lỗi được in vào bảng điều khiển. Thông báo lỗi được in ra được định dạng bằng các chuỗi Python F.

Cuối cùng, bạn cũng có thể sử dụng

>>> import os
>>> entries = os.listdir('my_directory/')
83 để xóa các tệp:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
4

Điều này tạo ra một đối tượng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
24 được gọi là
>>> import os
>>> entries = os.listdir('my_directory/')
96 trỏ đến một tệp. Gọi
>>> import os
>>> entries = os.listdir('my_directory/')
92 trên
>>> import os
>>> entries = os.listdir('my_directory/')
96 sẽ xóa
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
07. Nếu
>>> import os
>>> entries = os.listdir('my_directory/')
96 trỏ vào một thư mục, một
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
09 sẽ được nâng lên. Điều đáng chú ý là chương trình Python ở trên có các quyền tương tự như người dùng đang chạy nó. Nếu người dùng không có quyền xóa tệp,
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
10 sẽ được nâng lên.

Xóa thư mục

Thư viện tiêu chuẩn cung cấp các chức năng sau để xóa các thư mục:

  • >>> os.listdir('my_directory/')
    ['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
    
    11
  • >>> os.listdir('my_directory/')
    ['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
    
    12
  • >>> os.listdir('my_directory/')
    ['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
    
    13

Để xóa một thư mục hoặc thư mục duy nhất, hãy sử dụng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
11 hoặc
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
15. Hai chức năng này chỉ hoạt động nếu thư mục mà bạn đang cố gắng xóa là trống. Nếu thư mục không trống, một
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
48 sẽ được nâng lên. Đây là cách xóa một thư mục:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
5

Ở đây, thư mục

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
17 bị xóa bằng cách chuyển đường dẫn của nó đến
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
11. Nếu thư mục không trống, một thông báo lỗi được in lên màn hình:

>>>

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
6

Ngoài ra, bạn có thể sử dụng

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8 để xóa các thư mục:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
7

Ở đây, bạn tạo một đối tượng

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
24 trỏ đến thư mục sẽ bị xóa. Gọi
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
21 trên đối tượng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
24 sẽ xóa nó nếu nó trống.

Xóa toàn bộ cây thư mục

Để xóa các thư mục không trống và toàn bộ cây thư mục, Python cung cấp

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
13:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
8

Mọi thứ trong

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
17 đều bị xóa khi
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
13 được gọi trên nó. Có thể có những trường hợp bạn muốn xóa các thư mục trống một cách đệ quy. Bạn có thể làm điều này bằng cách sử dụng một trong các phương thức được thảo luận ở trên kết hợp với
>>> import os
>>> entries = os.listdir('my_directory/')
41:

>>> import os
>>> entries = os.scandir('my_directory/')
>>> entries
<posix.ScandirIterator object at 0x7f5b047f3690>
9

Điều này đi xuống cây thư mục và cố gắng xóa từng thư mục mà nó tìm thấy. Nếu thư mục không trống, một

my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
48 sẽ được nâng lên và thư mục đó bị bỏ qua. Bảng dưới đây liệt kê các chức năng được đề cập trong phần này:

Hàm sốSự mô tả
>>> import os
>>> entries = os.listdir('my_directory/')
84
Xóa một tệp và không xóa các thư mục
>>> import os
>>> entries = os.listdir('my_directory/')
85
Giống hệt với
>>> import os
>>> entries = os.listdir('my_directory/')
84 và xóa một tệp
>>> import os
>>> entries = os.listdir('my_directory/')
83
Xóa một tệp và không thể xóa các thư mục
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
11
Xóa một thư mục trống
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
12
Xóa một thư mục trống
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
12
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
13

Xóa toàn bộ cây thư mục và có thể được sử dụng để xóa các thư mục không trống

Sao chép, di chuyển và đổi tên các tập tin và thư mục

Tàu Python với mô -đun from pathlib import Path entries = Path('my_directory/') for entry in entries.iterdir(): print(entry.name) 7. from pathlib import Path entries = Path('my_directory/') for entry in entries.iterdir(): print(entry.name) 7 là viết tắt của các tiện ích vỏ. Nó cung cấp một số hoạt động cấp cao trên các tệp để hỗ trợ sao chép, lưu trữ và xóa các tệp và thư mục. Trong phần này, bạn sẽ học cách di chuyển và sao chép các tệp và thư mục.

Sao chép các tệp trong Python

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
0

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
7 cung cấp một vài chức năng để sao chép tệp. Các hàm được sử dụng phổ biến nhất là
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
38 và
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
39. Để sao chép tệp từ vị trí này sang vị trí khác bằng cách sử dụng
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
38, hãy làm như sau:

Để bảo tồn tất cả các siêu dữ liệu tệp khi sao chép, hãy sử dụng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
39:

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
1

Sử dụng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
52 Bảo tồn chi tiết về tệp như thời gian truy cập cuối cùng, bit quyền, thời gian sửa đổi cuối cùng và cờ.

Sao chép thư mục

Mặc dù

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
38 chỉ sao chép một tệp duy nhất,
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
54 sẽ sao chép toàn bộ thư mục và mọi thứ có trong đó.
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
55 có hai đối số: thư mục nguồn và thư mục đích trong đó các tệp và thư mục sẽ được sao chép.

Ở đây, một ví dụ về cách sao chép nội dung của một thư mục vào một địa điểm khác:

>>>

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
2

Trong ví dụ này,

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
56 sao chép nội dung của
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
57 đến một vị trí mới
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
58 và trả về thư mục đích. Thư mục đích không được tồn tại. Nó sẽ được tạo ra cũng như thiếu các thư mục phụ huynh.
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
54 là một cách tốt để sao lưu các tệp của bạn.

Di chuyển các tập tin và thư mục

Để di chuyển một tệp hoặc thư mục đến một vị trí khác, hãy sử dụng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
60.

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
44 là tệp hoặc thư mục sẽ được di chuyển và
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
45 là đích đến:

>>>

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
3

Trong ví dụ này,

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
56 sao chép nội dung của
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
57 đến một vị trí mới
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
58 và trả về thư mục đích. Thư mục đích không được tồn tại. Nó sẽ được tạo ra cũng như thiếu các thư mục phụ huynh.
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
54 là một cách tốt để sao lưu các tệp của bạn.

Di chuyển các tập tin và thư mục

Để di chuyển một tệp hoặc thư mục đến một vị trí khác, hãy sử dụng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
60.

>>>

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
4

Trong ví dụ này,

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
56 sao chép nội dung của
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
57 đến một vị trí mới
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
58 và trả về thư mục đích. Thư mục đích không được tồn tại. Nó sẽ được tạo ra cũng như thiếu các thư mục phụ huynh.
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
54 là một cách tốt để sao lưu các tệp của bạn.

Di chuyển các tập tin và thư mục

>>>

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
5

Trong ví dụ này,

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
56 sao chép nội dung của
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
57 đến một vị trí mới
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
58 và trả về thư mục đích. Thư mục đích không được tồn tại. Nó sẽ được tạo ra cũng như thiếu các thư mục phụ huynh.
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
54 là một cách tốt để sao lưu các tệp của bạn.

Di chuyển các tập tin và thư mục

Để di chuyển một tệp hoặc thư mục đến một vị trí khác, hãy sử dụng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
60.

>>> os.listdir('my_directory/') ['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir'] 44 là tệp hoặc thư mục sẽ được di chuyển và >>> os.listdir('my_directory/') ['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir'] 45 là đích đến:

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
63 di chuyển
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
64 vào
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
65 nếu
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
65 tồn tại. Nếu
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
65 không tồn tại,
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
64 sẽ được đổi tên thành
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
80.

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
6

Đổi tên các tập tin và thư mục

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
7

Python bao gồm

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
70 để đổi tên các tệp và thư mục:

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
8

Dòng trên sẽ đổi tên

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
71 thành
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
72. Nếu đường dẫn đích trỏ đến một thư mục, nó sẽ tăng
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
48.

import os

with os.scandir('my_directory/') as entries:
    for entry in entries:
        print(entry.name)
9

Một cách khác để đổi tên các tệp hoặc thư mục là sử dụng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
74 từ mô -đun
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8:

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
0

Để đổi tên các tệp bằng

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
8, trước tiên bạn tạo một đối tượng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
15 chứa đường dẫn đến tệp bạn muốn thay thế. Bước tiếp theo là gọi
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
74 trên đối tượng đường dẫn và chuyển tên tệp mới cho tệp hoặc thư mục mà bạn đang đổi tên.

Lưu trữ

Lưu trữ là một cách thuận tiện để đóng gói một số tệp thành một. Hai loại lưu trữ phổ biến nhất là zip và tar. Các chương trình Python bạn viết có thể tạo, đọc và trích xuất dữ liệu từ Lưu trữ. Bạn sẽ học cách đọc và ghi vào cả hai định dạng lưu trữ trong phần này.

>>>

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
1

Trong ví dụ này,

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
56 sao chép nội dung của
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
57 đến một vị trí mới
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
58 và trả về thư mục đích. Thư mục đích không được tồn tại. Nó sẽ được tạo ra cũng như thiếu các thư mục phụ huynh.
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
54 là một cách tốt để sao lưu các tệp của bạn.

Di chuyển các tập tin và thư mục

Để di chuyển một tệp hoặc thư mục đến một vị trí khác, hãy sử dụng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
60.

>>> os.listdir('my_directory/') ['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir'] 44 là tệp hoặc thư mục sẽ được di chuyển và >>> os.listdir('my_directory/') ['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir'] 45 là đích đến:

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
63 di chuyển
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
64 vào
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
65 nếu
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
65 tồn tại. Nếu
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
65 không tồn tại,
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
64 sẽ được đổi tên thành
my_directory/
|
├── sub_dir/
|   ├── bar.py
|   └── foo.py
|
├── sub_dir_b/
|   └── file4.txt
|
├── sub_dir_c/
|   ├── config.py
|   └── file5.txt
|
├── file1.py
├── file2.csv
└── file3.txt
80.

>>>

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
2

Trong ví dụ,

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
10 được mở ở chế độ ghi và mỗi tệp trong
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
11 được thêm vào kho lưu trữ. Khi bộ tuyên bố
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
20 kết thúc,
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
10 bị đóng. Mở một tệp zip trong chế độ ghi xóa nội dung của kho lưu trữ và tạo một kho lưu trữ mới.

Để thêm các tệp vào kho lưu trữ hiện có, hãy mở đối tượng

>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
81 ở chế độ phụ lục và sau đó thêm các tệp:

>>>

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
3

Tại đây, bạn mở kho lưu trữ

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
15 mà bạn đã tạo trong ví dụ trước trong chế độ nối. Mở đối tượng
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
81 ở chế độ Phụ lục cho phép bạn thêm các tệp mới vào tệp zip mà không cần xóa nội dung hiện tại của nó. Sau khi thêm các tệp vào tệp zip, câu lệnh
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
20 đi ra khỏi ngữ cảnh và đóng tệp zip.

Mở tài liệu lưu trữ tar

Các tập tin TAR là tài liệu lưu trữ tệp không nén như ZIP. Chúng có thể được nén bằng các phương pháp nén GZIP, BZIP2 và LZMA. Lớp

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
18 cho phép đọc và viết tài liệu lưu trữ tar.

Làm điều này để đọc từ một kho lưu trữ:

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
4

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
19 Các đối tượng mở như hầu hết các đối tượng giống như tệp. Chúng có chức năng
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
00 có chế độ xác định cách mở tệp.

Sử dụng các chế độ

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
21,
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
22 hoặc
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
23 để mở một tệp TAR không nén để đọc, viết và nối thêm. Để mở các tệp TAR được nén, chuyển trong một đối số chế độ sang
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
24 ở dạng
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
25. Bảng dưới đây liệt kê các tệp TAR có thể có thể được mở trong:

Cách thứcHoạt động
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
01
Mở lưu trữ để đọc với nén trong suốt
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
27
Mở lưu trữ để đọc với nén GZIP
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
28
Mở lưu trữ để đọc với nén BZIP2
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
29
Mở lưu trữ để đọc với nén LZMA
with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
02
Mở lưu trữ cho văn bản không nén
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
31
Mở kho lưu trữ cho văn bản nén GZIP
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
32
Mở lưu trữ cho văn bản nén LZMA
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
33
Mở kho lưu trữ để nối thêm không có nén

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
34 Mặc định cho chế độ
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
21. Để đọc một tệp TAR không nén và truy xuất tên của các tệp trong đó, hãy sử dụng
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
36:

>>>

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
5

Điều này trả về một danh sách với tên của nội dung lưu trữ.

Siêu dữ liệu của mỗi mục trong kho lưu trữ có thể được truy cập bằng các thuộc tính đặc biệt:

>>>

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
6

Trong ví dụ này, bạn lặp qua danh sách các tệp được trả về bởi

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
37 và in ra từng thuộc tính của tệp. Các đối tượng được trả về bởi
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
37 có các thuộc tính có thể được truy cập theo chương trình như tên, kích thước và thời gian sửa đổi cuối cùng của mỗi tệp trong kho lưu trữ. Sau khi đọc hoặc viết vào kho lưu trữ, nó phải được đóng để giải phóng các tài nguyên hệ thống.

Tạo tài liệu lưu trữ tar mới

Đây là cách bạn làm điều đó:

>>>

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
7

Đầu tiên, bạn lập một danh sách các tệp được thêm vào kho lưu trữ để bạn không phải thêm từng tệp theo cách thủ công.

Dòng tiếp theo sử dụng trình quản lý bối cảnh

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
20 để mở một kho lưu trữ mới có tên
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
40 ở chế độ ghi. Mở một kho lưu trữ trong chế độ ghi (________ 522) cho phép bạn viết các tệp mới vào kho lưu trữ. Bất kỳ tệp hiện có trong kho lưu trữ đều bị xóa và một kho lưu trữ mới được tạo.

Sau khi kho lưu trữ được tạo và điền, trình quản lý bối cảnh

with open('data.txt', 'w') as f:
    data = 'some data to be written to the file'
    f.write(data)
20 tự động đóng nó và lưu nó vào hệ thống tập tin. Ba dòng cuối cùng mở kho lưu trữ bạn vừa tạo và in ra tên của các tệp có trong đó.

Để thêm các tệp mới vào kho lưu trữ hiện có, hãy mở kho lưu trữ ở chế độ phụ trợ (

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
23):

>>>

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
8

Mở một kho lưu trữ ở chế độ phụ lục cho phép bạn thêm các tệp mới vào nó mà không cần xóa các tệp đã có trong đó.

Làm việc với tài liệu lưu trữ nén

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
19 cũng có thể đọc và viết tài liệu lưu trữ tar được nén bằng cách sử dụng nén GZIP, BZIP2 và LZMA. Để đọc hoặc ghi vào kho lưu trữ nén, sử dụng
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
24, chuyển ở chế độ thích hợp cho loại nén.

Ví dụ: để đọc hoặc ghi dữ liệu vào kho lưu trữ TAR được nén bằng GZIP, sử dụng chế độ

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
46 hoặc
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
47 tương ứng:

>>>

sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
9

Chế độ

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
47 mở kho lưu trữ cho văn bản nén GZIP và
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
46 mở kho lưu trữ để đọc nén GZIP. Mở tài liệu lưu trữ nén trong chế độ nối là không thể. Để thêm các tệp vào kho lưu trữ nén, bạn phải tạo một kho lưu trữ mới.

Một cách dễ dàng hơn để tạo tài liệu lưu trữ

Thư viện tiêu chuẩn Python cũng hỗ trợ tạo tài liệu lưu trữ TAR và ZIP bằng các phương thức cấp cao trong mô-đun

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
7. Các tiện ích lưu trữ trong
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
7 cho phép bạn tạo, đọc và trích xuất tài liệu lưu trữ zip và tar. Các tiện ích này dựa vào các mô -đun cấp thấp hơn
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
19 và
>>> os.listdir('my_directory/')
['sub_dir_c', 'file1.py', 'sub_dir_b', 'file3.txt', 'file2.csv', 'sub_dir']
79.

Làm việc với tài liệu lưu trữ bằng cách sử dụng

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
54

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
54 mất ít nhất hai đối số: tên của kho lưu trữ và định dạng lưu trữ.

Theo mặc định, nó nén tất cả các tệp trong thư mục hiện tại vào định dạng lưu trữ được chỉ định trong đối số

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
56. Bạn có thể chuyển trong một đối số
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
57 tùy chọn để nén các tệp trong một thư mục khác.
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
58 hỗ trợ
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
59,
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
60,
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
61 và
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
62 Định dạng lưu trữ.

Đây là cách tạo lưu trữ TAR bằng cách sử dụng

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
7:

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
0

Điều này sao chép mọi thứ trong

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
64 và tạo một kho lưu trữ có tên
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
65 trong hệ thống tập tin và trả về tên của nó. Để trích xuất kho lưu trữ, hãy gọi
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
66:

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
1

Gọi

>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
66 và chuyển trong một tên lưu trữ và thư mục đích trích xuất nội dung của
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
65 vào
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
69. Lưu trữ ZIP có thể được tạo và trích xuất theo cùng một cách.

Đọc nhiều tập tin

Python hỗ trợ đọc dữ liệu từ nhiều luồng đầu vào hoặc từ danh sách các tệp thông qua mô -đun

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
9. Mô -đun này cho phép bạn lặp lại nội dung của một hoặc nhiều tệp văn bản một cách nhanh chóng và dễ dàng. Ở đây, cách thức điển hình
from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
9 được sử dụng:

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
2

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
9 nhận được đầu vào của nó từ các đối số dòng lệnh được chuyển đến
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
73 theo mặc định.

Sử dụng

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
9 để lặp qua nhiều tệp

Hãy để sử dụng

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
9 để xây dựng một phiên bản thô của tiện ích Unix chung
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
76. Tiện ích
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
76 đọc các tệp theo tuần tự, ghi chúng vào đầu ra tiêu chuẩn. Khi được đưa ra nhiều hơn một tệp trong các đối số dòng lệnh của nó,
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
76 sẽ kết hợp các tệp văn bản và hiển thị kết quả trong thiết bị đầu cuối:

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
3

Chạy này trên hai tệp văn bản trong thư mục hiện tại của tôi tạo ra đầu ra sau:

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
4

from pathlib import Path

entries = Path('my_directory/')
for entry in entries.iterdir():
    print(entry.name)
9 cho phép bạn truy xuất thêm thông tin về từng dòng, chẳng hạn như liệu đó có phải là dòng đầu tiên (
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
80), số dòng (
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
81) và tên tệp (
>>> entries = os.listdir('my_directory/')
>>> for entry in entries:
...     print(entry)
...
...
sub_dir_c
file1.py
sub_dir_b
file3.txt
file2.csv
sub_dir
82). Bạn có thể đọc thêm về nó ở đây.

Sự kết luận

Bây giờ bạn đã biết cách sử dụng Python để thực hiện các hoạt động phổ biến nhất trên các tệp và nhóm tệp. Bạn đã học về các mô-đun tích hợp khác nhau được sử dụng để đọc, tìm và thao tác chúng.

Bây giờ bạn được trang bị để sử dụng Python để:

  • Nhận nội dung thư mục và thuộc tính tệp
  • Tạo thư mục và cây thư mục
  • Tìm các mẫu trong tên tệp
  • Tạo các tệp và thư mục tạm thời
  • Di chuyển, đổi tên, sao chép và xóa các tệp hoặc thư mục
  • Đọc và trích xuất dữ liệu từ các loại tài liệu lưu trữ khác nhau
  • Đọc đồng thời nhiều tệp bằng cách sử dụng
    from pathlib import Path
    
    entries = Path('my_directory/')
    for entry in entries.iterdir():
        print(entry.name)
    
    9

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ông thức nấu ăn thực tế để làm việc với các tệp trong 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: Practical Recipes for Working With Files in Python