Hướng dẫn fnmatch python - trăn fnmatch

Mã nguồn: lib/fnmatch.py Lib/fnmatch.py

Mô-đun này cung cấp hỗ trợ cho các ký tự đại diện kiểu vỏ Unix, không giống như các biểu thức thông thường [được ghi lại trong mô-đun

import os

with os.scandir['my_directory/'] as entries:
    for entry in entries:
        print[entry.name]
7]. Các nhân vật đặc biệt được sử dụng trong các ký tự đại diện kiểu vỏ là:

Họa tiết

Nghĩa

import os

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

Phù hợp với mọi thứ

import os

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

khớp với bất kỳ ký tự đơn lẻ

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

00

khớp với bất kỳ ký tự nào trong SEQ

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

01

khớp với bất kỳ ký tự nào không có trong seq

Đối với một trận đấu theo nghĩa đen, hãy bọc các nhân vật tổng hợp trong ngoặc. Ví dụ,

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

02 khớp với ký tự
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

03.

Lưu ý rằng bộ phân cách tệp [

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

04 trên UNIX] không đặc biệt đối với mô -đun này. Xem mô -đun
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

05 để mở rộng tên đường dẫn [
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

05 sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

07 để phù hợp với các phân đoạn PathName]. Tương tự, tên tệp bắt đầu với một khoảng thời gian không đặc biệt cho mô -đun này và được khớp với các mẫu
import os

with os.scandir['my_directory/'] as entries:
    for entry in entries:
        print[entry.name]
8 và
import os

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

Cũng lưu ý rằng

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

10 với mức tối đa của 32768 được sử dụng để lưu trữ các mẫu regex được biên dịch trong các chức năng sau:
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

11,
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

12,
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

07.

fnmatch.fnmatch [tên tệp, mẫu] ¶fnmatch[filename, pattern]

Kiểm tra xem chuỗi tên tệp có khớp với chuỗi mẫu hay không, trả về

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

14 hoặc
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

15. Cả hai tham số đều được bình thường hóa trường hợp bằng cách sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

16.
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

12 có thể được sử dụng để thực hiện so sánh nhạy cảm trường hợp, bất kể tiêu chuẩn đó cho hệ điều hành.

Ví dụ này sẽ in tất cả các tên tệp trong thư mục hiện tại với phần mở rộng

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

18:

import fnmatch
import os

for file in os.listdir['.']:
    if fnmatch.fnmatch[file, '*.txt']:
        print[file]

fnmatch.fnmatchcase [tên tệp, mẫu] ¶fnmatchcase[filename, pattern]

Kiểm tra xem tên tệp có khớp với mẫu hay không, trả về

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

14 hoặc
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

15; Việc so sánh là nhạy cảm trường hợp và không áp dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

16.

fnmatch.filter [tên, mẫu] ¶filter[names, pattern]

Xây dựng một danh sách từ các yếu tố của các tên có thể khớp với mẫu. Nó giống như

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

22, nhưng đã thực hiện hiệu quả hơn.

fnmatch.translate [mẫu] ¶translate[pattern]

Trả về mẫu kiểu vỏ được chuyển đổi thành một biểu thức chính quy để sử dụng với

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

23.

Example:

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

Xem thêm

Mô -đun
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

05

Mở rộng đường dẫn kiểu vỏ Unix.

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

Nội phân Chính showShow

  • Python xông vào với Mở ra [phạm vi] như mô hình
  • Nhận một danh sách thư mục
  • Danh sách thư mục trong các phiên bản Python kế thừa
  • Danh sách thư mục trong các phiên bản Python hiện đại
  • Liệt kê tất cả các tệp trong một thư mục
  • Liệt kê các thư mục con
  • Nhận thuộc tính tệp
  • Làm thư mục
  • Tạo một thư mục duy nhất
  • Tạo nhiều thư mục
  • Kết hợp mẫu tệp
  • Sử dụng các phương thức chuỗi
  • Kết hợp mẫu tệp đơn giản bằng cách sử dụng fnmatch
  • Kết hợp mẫu nâng cao hơn
  • Khớp mẫu tên tệp bằng cách sử dụng glob
  • Trải qua các thư mục và xử lý các tệp
  • 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
  • Xóa các tệp trong Python
  • Xóa thư mục
  • Xóa toàn bộ cây thư mục
  • Sao chép, di chuyển và đổi tên các tập tin và thư mục
  • Sao chép các tệp trong Python
  • Sao chép thư mục
  • Di chuyển các tập tin và thư mục
  • Đổi tên các tập tin và thư mục
  • Đọc các tập tin zip
  • Tạo tài liệu lưu trữ zip mới
  • Mở tài liệu lưu trữ tar
  • Tạo tài liệu lưu trữ tar mới
  • Làm việc với tài liệu lưu trữ nén
  • Một cách dễ dàng hơn để tạo tài liệu lưu trữ
  • Đọc nhiều tập tin
  • Làm cách nào để đọc một thư mục cụ thể trong Python?
  • Làm cách nào để in nội dung của một thư mục trong Python?
  • Làm cách nào để liệt kê tất cả các tệp của một thư mục?
  • Làm cách nào để đọc danh sách các tệp trong Python?

Để 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, hãy sử dụng os.listdir [] trong các phiên bản cũ của Python hoặc Os.Scandir [] trong Python 3.x.

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

  • Nội phân Chính show
  • Python xông vào với Mở ra [phạm vi] như mô hình
  • Nhận một danh sách thư mục
  • Danh sách thư mục trong các phiên bản Python kế thừa
  • Danh sách thư mục trong các phiên bản Python hiện đại
  • Liệt kê tất cả các tệp trong một thư mục
  • Liệt kê các thư mục con
  • Nhận thuộc tính tệp
  • Làm thư mục

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

Tạo nhiều thư mục

with open['data.txt', 'r'] as f:
    data = f.read[]

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

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

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

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

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

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

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

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

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

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

>>> import os
>>> entries = os.listdir['my_directory/']

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

>>>

>>> os.listdir['my_directory/']
['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 ra đầu ra của cuộc gọi đến

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37 bằng cách sử dụng vòng lặp giúp làm sạch mọi thứ:

>>>

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

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37 là sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 và
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45.

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 đã được giới thiệu trong Python 3.5 và được ghi lại trong PEP 471.
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 trả về một trình lặp lại trái ngược với danh sách khi được gọi là:

>>>

________số 8

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

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

import os

with os.scandir['my_directory/'] as entries:
    for entry in entries:
        print[entry.name]

Ở đây,

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 được sử dụng cùng với câu lệnh
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50 vì nó hỗ trợ giao thức Trình quản lý ngữ cảnh. Sử dụng trình quản lý bối cảnh đóng trình lặp và giải phóng các tài nguyên có được sau khi trình lặp đã cạn kiệt. Kết quả là một bản in ra khỏi tên tệp trong
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

51 giống như bạn đã thấy trong ví dụ
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37:

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

0

Một cách khác để có được danh sách thư mục là sử dụng mô -đun

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28:

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

1

Các đối tượng được trả về bởi

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

54 là
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

55 hoặc
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

56 Các đối tượng tùy thuộc vào HĐH.

Các đối tượng

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45 có phương thức
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

58 để tạo trình lặp của tất cả các tệp và thư mục trong một thư mục. Mỗi mục được mang lại bởi
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

58 chứa thông tin về tệp hoặc thư mục như tên và thuộc tính tệp của nó.
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 lần đầu tiên được giới thiệu trong Python 3.4 và là một bổ sung tuyệt vời cho Python cung cấp giao diện hướng đối tượng cho hệ thống tệp.

Trong ví dụ trên, bạn gọi

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45 và chuyển một đối số đường dẫn cho nó. Tiếp theo là cuộc gọi đến
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

58 để có được danh sách tất cả các tệp và thư mục trong
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

35.

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 cung cấp một tập hợp các lớp có hầu hết các hoạt động phổ biến trên các đường dẫn theo một cách dễ dàng, hướng đối tượng. Sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 sẽ nhiều hơn nếu không hiệu quả như nhau như sử dụng các chức năng trong
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

25. Một lợi ích khác của việc sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 trên
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

25 là nó làm giảm số lượng nhập khẩu bạn cần thực hiện để thao túng các đường dẫn hệ thống tập tin. Để biết thêm thông tin, hãy đọc mô -đun Python 3 Pathlib: Taming hệ thống tệp.

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

0

Sử dụng

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45 hoặc
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 thay vì
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37 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.
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45 cung cấp nhiều chức năng xử lý tệp và đường dẫn được tìm thấy trong
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

25 và
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

27, 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ả
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37
Trả về danh sách tất cả các tệp và thư mục trong một thư mục
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38
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
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

77
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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

77

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

3

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37,
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 và
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45. Để 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
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37, hãy sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

26:

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

4

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37 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
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

84 để 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:

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

5

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 hoặc
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45:

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

4

Sử dụng

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 có lợi thế là trông sạch hơn và dễ hiểu hơn là sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37, mặc dù nó là một dòng mã dài hơn. Gọi
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

89 trên mỗi mục trong
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48 trả về
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

7

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45:

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

4

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

93 trên mỗi mục được mang lại bởi
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

58. Đầu ra được tạo ra là như nhau:

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

9

Đ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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 và
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45 cảm thấy trực quan hơn và trông sạch hơn so với việc sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37 kết hợp với
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

26.

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

Để 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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37 và
with open['data.txt', 'r'] as f:
    data = f.read[]
02:

with open['data.txt', 'r'] as f:
    data = f.read[]
0

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', 'r'] as f:
    data = f.read[]
03. Chạy cái này trên máy tính của tôi tạo ra đầu ra sau:

with open['data.txt', 'r'] as f:
    data = f.read[]
1

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38:

with open['data.txt', 'r'] as f:
    data = f.read[]
2

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

with open['data.txt', 'r'] as f:
    data = f.read[]
05 trên mỗi mục được trả về bởi
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38. Nếu mục nhập là một thư mục,
with open['data.txt', 'r'] as f:
    data = f.read[]
05 trả về
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

91 và tên thư mục được in ra. Đầu ra giống như trên:

with open['data.txt', 'r'] as f:
    data = f.read[]
1

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45:

with open['data.txt', 'r'] as f:
    data = f.read[]
4

Gọi

with open['data.txt', 'r'] as f:
    data = f.read[]
05 trên mỗi mục nhập của trình lặp
with open['data.txt', 'r'] as f:
    data = f.read[]
11 kiểm tra xem một mục nhập là tệp hoặc 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:

with open['data.txt', 'r'] as f:
    data = f.read[]
1

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', 'r'] as f:
    data = f.read[]
12,
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 hoặc
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45.

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 và
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

45 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 việc sử dụng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

37 để 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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

51 đã được sửa đổi lần cuối. Đầu ra là trong vài giây:

>>>

with open['data.txt', 'r'] as f:
    data = f.read[]
6

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 Trả về một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48. Mỗi mục nhập trong một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48 có phương thức
with open['data.txt', 'r'] as f:
    data = f.read[]
22 lấy thông tin về tệp hoặc thư mục mà nó trỏ đến.
with open['data.txt', 'r'] as f:
    data = f.read[]
22 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', 'r'] as f:
    data = f.read[]
24, đó là thời gian nội dung của tệp được sửa đổi lần cuối.

Mô -đun

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 có các phương thức tương ứng để truy xuất thông tin tệp cho cùng kết quả:

>>>

with open['data.txt', 'r'] as f:
    data = f.read[]
7

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 Trả về một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48. Mỗi mục nhập trong một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48 có phương thức
with open['data.txt', 'r'] as f:
    data = f.read[]
22 lấy thông tin về tệp hoặc thư mục mà nó trỏ đến.
with open['data.txt', 'r'] as f:
    data = f.read[]
22 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', 'r'] as f:
    data = f.read[]
24, đó là thời gian nội dung của tệp được sửa đổi lần cuối.

with open['data.txt', 'r'] as f:
    data = f.read[]
8

Mô -đun

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 có các phương thức tương ứng để truy xuất thông tin tệp cho cùng kết quả:

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

58 và truy xuất các thuộc tính tệp thông qua lệnh gọi
with open['data.txt', 'r'] as f:
    data = f.read[]
22 cho mỗi tệp trong danh sách thư mục. Thuộc tính
with open['data.txt', 'r'] as f:
    data = f.read[]
24 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', 'r'] as f:
    data = f.read[]
24 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
with open['data.txt', 'r'] as f:
    data = f.read[]
30:

  • Điều này trước tiên sẽ nhận được một danh sách các tệp trong
    >>> import fnmatch, re
    >>>
    >>> regex = fnmatch.translate['*.txt']
    >>> regex
    '[?s:.*\\.txt]\\Z'
    >>> reobj = re.compile[regex]
    >>> reobj.match['foobar.txt']
    
    
    35 và các thuộc tính của chúng và sau đó gọi
    with open['data.txt', 'r'] as f:
        data = f.read[]
    
    32 để chuyển đổi từng tệp Thời gian sửa đổi cuối cùng thành một hình thức có thể đọc được của con người.
    with open['data.txt', 'r'] as f:
        data = f.read[]
    
    32 Sử dụng
    with open['data.txt', 'r'] as f:
        data = f.read[]
    
    34 để chuyển đổi thời gian tính bằng giây thành một chuỗi.
    the day of the month
  • Các đối số được chuyển đến
    with open['data.txt', 'r'] as f:
        data = f.read[]
    
    34 là như sau:
    the month, in abbreviated form
  • with open['data.txt', 'r'] as f:
        data = f.read[]
    
    36: ngày trong tháng
    the year

with open['data.txt', 'r'] as f:
    data = f.read[]
37: Tháng, ở dạng viết tắt

>>>

with open['data.txt', 'r'] as f:
    data = f.read[]
9

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 Trả về một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48. Mỗi mục nhập trong một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48 có phương thức
with open['data.txt', 'r'] as f:
    data = f.read[]
22 lấy thông tin về tệp hoặc thư mục mà nó trỏ đến.
with open['data.txt', 'r'] as f:
    data = f.read[]
22 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', 'r'] as f:
    data = f.read[]
24, đó là thời gian nội dung của tệp được sửa đổi lần cuối.

Mô -đun
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 có các phương thức tương ứng để truy xuất thông tin tệp cho cùng kết quả:

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

58 và truy xuất các thuộc tính tệp thông qua lệnh gọi
with open['data.txt', 'r'] as f:
    data = f.read[]
22 cho mỗi tệp trong danh sách thư mục. Thuộc tính
with open['data.txt', 'r'] as f:
    data = f.read[]
24 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', 'r'] as f:
    data = f.read[]
24 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
with open['data.txt', 'r'] as f:
    data = f.read[]
30:

Điều này trước tiên sẽ nhận được một danh sách các tệp trong
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

35 và các thuộc tính của chúng và sau đó gọi
with open['data.txt', 'r'] as f:
    data = f.read[]
32 để chuyển đổi từng tệp Thời gian sửa đổi cuối cùng thành một hình thức có thể đọc được của con người.
with open['data.txt', 'r'] as f:
    data = f.read[]
32 Sử dụng
with open['data.txt', 'r'] as f:
    data = f.read[]
34 để 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
with open['data.txt', 'r'] as f:
    data = f.read[]
34 là như sau:
with open['data.txt', 'r'] as f:
    data = f.read[]
36: ngày trong tháng
with open['data.txt', 'r'] as f:
    data = f.read[]
37: Tháng, ở dạng viết tắt
with open['data.txt', 'r'] as f:
    data = f.read[]
38: Năm
Cùng nhau, các chỉ thị này tạo ra đầu ra trông như thế này:
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à //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 đó.
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

25 và
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 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ố

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
0

Sự mô tả

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

with open['data.txt', 'r'] as f:
    data = f.read[]
41

>>>

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

38 Trả về một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48. Mỗi mục nhập trong một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

48 có phương thức
with open['data.txt', 'r'] as f:
    data = f.read[]
22 lấy thông tin về tệp hoặc thư mục mà nó trỏ đến.
with open['data.txt', 'r'] as f:
    data = f.read[]
22 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', 'r'] as f:
    data = f.read[]
24, đó là thời gian nội dung của tệp được sửa đổi lần cuối.

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

Mô -đun

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 có các phương thức tương ứng để truy xuất thông tin tệp cho cùng kết quả:

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
4

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

58 và truy xuất các thuộc tính tệp thông qua lệnh gọi
with open['data.txt', 'r'] as f:
    data = f.read[]
22 cho mỗi tệp trong danh sách thư mục. Thuộc tính
with open['data.txt', 'r'] as f:
    data = f.read[]
24 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', 'r'] as f:
    data = f.read[]
24 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
with open['data.txt', 'r'] as f:
    data = f.read[]
30:

Điều này trước tiên sẽ nhận được một danh sách các tệp trong
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

35 và các thuộc tính của chúng và sau đó gọi
with open['data.txt', 'r'] as f:
    data = f.read[]
32 để chuyển đổi từng tệp Thời gian sửa đổi cuối cùng thành một hình thức có thể đọc được của con người.
with open['data.txt', 'r'] as f:
    data = f.read[]
32 Sử dụng
with open['data.txt', 'r'] as f:
    data = f.read[]
34 để 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

with open['data.txt', 'r'] as f:
    data = f.read[]
34 là như sau:

with open['data.txt', 'r'] as f:
    data = f.read[]
43 tương tự như chạy
with open['data.txt', 'r'] as f:
    data = f.read[]
57 trong bash. Ví dụ: để tạo một nhóm các thư mục như
with open['data.txt', 'r'] as f:
    data = f.read[]
58, tất cả những gì bạn phải làm là như sau:

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

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

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
6

with open['data.txt', 'r'] as f:
    data = f.read[]
59 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
with open['data.txt', 'r'] as f:
    data = f.read[]
59 và vượt qua trong chế độ, bạn muốn các thư mục được tạo trong:

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

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

with open['data.txt', 'r'] as f:
    data = f.read[]
58 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à
with open['data.txt', 'r'] as f:
    data = f.read[]
62 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

with open['data.txt', 'r'] as f:
    data = f.read[]
63 để xác nhận rằng các quyền phù hợp đã được áp dụng:

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

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

with open['data.txt', 'r'] as f:
    data = f.read[]
63 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. Chuyển các đối số
with open['data.txt', 'r'] as f:
    data = f.read[]
65 và
with open['data.txt', 'r'] as f:
    data = f.read[]
66 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.
with open['data.txt', 'r'] as f:
    data = f.read[]
65 in ra các quyền của tệp và
with open['data.txt', 'r'] as f:
    data = f.read[]
66 tạo ra
with open['data.txt', 'r'] as f:
    data = f.read[]
63 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

with open['data.txt', 'r'] as f:
    data = f.read[]
70. Một cách khác để tạo các thư mục là sử dụng
with open['data.txt', 'r'] as f:
    data = f.read[]
52 từ
with open['data.txt', 'r'] as f:
    data = f.read[]
72:

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

Chuyển

with open['data.txt', 'r'] as f:
    data = f.read[]
73 đến
with open['data.txt', 'r'] as f:
    data = f.read[]
74 khiến nó tạo ra thư mục
with open['data.txt', 'r'] as f:
    data = f.read[]
75 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,

with open['data.txt', 'r'] as f:
    data = f.read[]
43 và
with open['data.txt', 'r'] as f:
    data = f.read[]
74 tăng
with open['data.txt', 'r'] as f:
    data = f.read[]
78 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
with open['data.txt', 'r'] as f:
    data = f.read[]
51 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:

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
6

Tôi thích sử dụng

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

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

  • with open['data.txt', 'r'] as f:
        data = f.read[]
    
    81 và
    with open['data.txt', 'r'] as f:
        data = f.read[]
    
    82 Phương thức chuỗi
  • with open['data.txt', 'r'] as f:
        data = f.read[]
    
    83
  • with open['data.txt', 'r'] as f:
        data = f.read[]
    
    84
  • with open['data.txt', 'r'] as f:
        data = f.read[]
    
    85

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à

with open['data.txt', 'r'] as f:
    data = f.read[]
86 có cấu trúc 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
1

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:

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

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

with open['data.txt', 'r'] as f:
    data = f.read[]
87, thay đổi vào nó và sau đó tạo
with open['data.txt', 'r'] as f:
    data = f.read[]
88. Dòng tiếp theo tạo ra
with open['data.txt', 'r'] as f:
    data = f.read[]
89 và
with open['data.txt', 'r'] as f:
    data = f.read[]
90 trong
with open['data.txt', 'r'] as f:
    data = f.read[]
88 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,

with open['data.txt', 'r'] as f:
    data = f.read[]
92 và
with open['data.txt', 'r'] as f:
    data = f.read[]
93, 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ó:

>>>

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
3

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

with open['data.txt', 'r'] as f:
    data = f.read[]
87, lặp lại chúng và sử dụng
with open['data.txt', 'r'] as f:
    data = f.read[]
93 để in ra các tên tệp có phần mở rộng tệp
with open['data.txt', 'r'] as f:
    data = f.read[]
96. 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
4

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

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

with open['data.txt', 'r'] as f:
    data = f.read[]
97 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
with open['data.txt', 'r'] as f:
    data = f.read[]
83, một chức năng hỗ trợ việc sử dụng các ký tự đại diện như
with open['data.txt', 'r'] as f:
    data = f.read[]
99 và
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
00 để khớp với tên tệp. Ví dụ: để tìm tất cả các tệp
with open['data.txt', 'r'] as f:
    data = f.read[]
96 trong một thư mục bằng cách sử dụng
with open['data.txt', 'r'] as f:
    data = f.read[]
97, bạn sẽ thực hiện 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
5

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

with open['data.txt', 'r'] as f:
    data = f.read[]
87, lặp lại chúng và sử dụng
with open['data.txt', 'r'] as f:
    data = f.read[]
93 để in ra các tên tệp có phần mở rộng tệp
with open['data.txt', 'r'] as f:
    data = f.read[]
96. 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 fnmatch

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

with open['data.txt', 'r'] as f:
    data = f.read[]
97 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
with open['data.txt', 'r'] as f:
    data = f.read[]
83, một chức năng hỗ trợ việc sử dụng các ký tự đại diện như
with open['data.txt', 'r'] as f:
    data = f.read[]
99 và
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
00 để khớp với tên tệp. Ví dụ: để tìm tất cả các tệp
with open['data.txt', 'r'] as f:
    data = f.read[]
96 trong một thư mục bằng cách sử dụng
with open['data.txt', 'r'] as f:
    data = f.read[]
97, 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

with open['data.txt', 'r'] as f:
    data = f.read[]
86 và sử dụng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
04 để thực hiện tìm kiếm ký tự đại diện cho các tệp có tiện ích mở rộng
with open['data.txt', 'r'] as f:
    data = f.read[]
96.

>>>

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

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

with open['data.txt', 'r'] as f:
    data = f.read[]
87, lặp lại chúng và sử dụng
with open['data.txt', 'r'] as f:
    data = f.read[]
93 để in ra các tên tệp có phần mở rộng tệp
with open['data.txt', 'r'] as f:
    data = f.read[]
96. 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
7

Khớp mẫu tên tệp bằng cách sử dụng glob

Một mô -đun hữu ích khác để khớp mẫu là

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17.

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
18 Trong mô -đun
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 hoạt động giống như
with open['data.txt', 'r'] as f:
    data = f.read[]
83, nhưng không giống như
with open['data.txt', 'r'] as f:
    data = f.read[]
83, nó xử lý các tệp bắt đầu bằng một khoảng thời gian [
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
22] là đặc biệt.

UNIX và các hệ thống liên quan dịch các mẫu tên với các ký tự đại diện như

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
00 và
with open['data.txt', 'r'] as f:
    data = f.read[]
99 thành một danh sách các tệp. Điều này được gọi là Globbing.

Ví dụ: gõ

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
25 vào một shell di chuyển [
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
26] tất cả các tệp với tiện ích mở rộng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
27 từ thư mục hiện tại sang thư mục
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
28. Nhân vật
with open['data.txt', 'r'] as f:
    data = f.read[]
99 là một ký tự đại diện có nghĩa là bất kỳ số lượng ký tự nào, và và
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
30 là mẫu GLOB. Khả năng shell này không có sẵn trong hệ điều hành Windows. Mô -đun
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 thêm khả năng này trong Python, cho phép các chương trình Windows sử dụng tính năng này.

Dưới đây, một ví dụ về cách sử dụng

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 để tìm kiếm tất cả các tệp nguồn Python [
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
27] trong 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
8

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
34 Tìm kiếm tất cả các tệp có tiện ích mở rộng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
27 trong thư mục hiện tại và trả về chúng dưới dạng danh sách.
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 cũng hỗ trợ các ký tự đại diện theo kiểu vỏ để phù hợp với các 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
9

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
34 Tìm kiếm tất cả các tệp có tiện ích mở rộng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
27 trong thư mục hiện tại và trả về chúng dưới dạng danh sách.
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 cũng hỗ trợ các ký tự đại diện theo kiểu vỏ để phù hợp với các mẫu:

Điều này tìm thấy tất cả các tệp văn bản [
with open['data.txt', 'r'] as f:
    data = f.read[]
96] có chứa các chữ số trong tên 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
4

>>>

>>> import os
>>> entries = os.listdir['my_directory/']
1

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
34 Tìm kiếm tất cả các tệp có tiện ích mở rộng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
27 trong thư mục hiện tại và trả về chúng dưới dạng danh sách.
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 cũng hỗ trợ các ký tự đại diện theo kiểu vỏ để phù hợp với các mẫu:

Điều này tìm thấy tất cả các tệp văn bản [

with open['data.txt', 'r'] as f:
    data = f.read[]
96] có chứa các chữ số trong tên tệp:

>>> import os
>>> entries = os.listdir['my_directory/']
2

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

>>>

>>> import os
>>> entries = os.listdir['my_directory/']
3

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
34 Tìm kiếm tất cả các tệp có tiện ích mở rộng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
27 trong thư mục hiện tại và trả về chúng dưới dạng danh sách.
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 cũng hỗ trợ các ký tự đại diện theo kiểu vỏ để phù hợp với các mẫu:

Điều này tìm thấy tất cả các tệp văn bản [

with open['data.txt', 'r'] as f:
    data = f.read[]
96] có chứa các chữ số trong tên 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
4

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 giúp bạn dễ dàng tìm kiếm các tệp một cách đệ quy trong các thư mục con:Ví dụ này sử dụng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
39 để tìm kiếm các tệp
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
27 trong thư mục và thư mục con hiện tại. Vượt qua
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
41 như một đối số cho
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
42 khiến nó tìm kiếm các tệp
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
27 trong thư mục hiện tại và bất kỳ thư mục con nào. Sự khác biệt giữa
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
39 và
with open['data.txt', 'r'] as f:
    data = f.read[]
84 là
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
42 trả về một trình lặp thay vì một danh sách.
Chạy chương trình ở trên tạo ra những điều sau:
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 chứa các phương thức tương tự để tạo danh sách tệp linh hoạt. Ví dụ dưới đây cho thấy cách bạn có thể sử dụng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
48 để liệt kê các loại tệp bắt đầu bằng chữ cái
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
49:
Gọi
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
50 Trả về một đối tượng Trình tạo trỏ đến tất cả các tệp trong thư mục hiện tại bắt đầu bằng chữ cái
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
49 trong phần mở rộng tệp của họ.
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
52 tương tự như
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
53 đã thảo luận ở trên. Như bạn có thể thấy,
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 kết hợp nhiều tính năng tốt nhất của các mô -đun
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

25,
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

26 và
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
17 thành một mô -đun duy nhất, giúp sử dụng niềm vui.
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ả
with open['data.txt', 'r'] as f:
    data = f.read[]
82
Kiểm tra xem một chuỗi bắt đầu với một mẫu được chỉ định và trả về
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

91 hoặc
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
60
with open['data.txt', 'r'] as f:
    data = f.read[]
81

Kiểm tra xem một chuỗi kết thúc bằng một mẫu được chỉ định và trả về
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

91 hoặc
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
60

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
64

>>> import os
>>> entries = os.listdir['my_directory/']
4

Kiểm tra xem tên tệp phù hợp với mẫu và trả về

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

91 hay
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
60

with open['data.txt', 'r'] as f:
    data = f.read[]
84

>>> import os
>>> entries = os.listdir['my_directory/']
5

Trả về một danh sách các tên tệp phù hợp với một mẫu

  1. with open['data.txt', 'r'] as f:
        data = f.read[]
    
    85

  2. Tìm các mẫu trong tên đường dẫn và trả về một đối tượng máy phát

  3. 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

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
69 có thể được sử dụng để làm điều này.
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
69 đượ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:

>>> import os
>>> entries = os.listdir['my_directory/']
6

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

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
69.

>>> import os
>>> entries = os.listdir['my_directory/']
7

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
69 Mặc định để vượt qua các thư mục theo cách từ trên xuống:

>>> import os
>>> entries = os.listdir['my_directory/']
8

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
69 Trả về ba giá trị trên mỗi lần lặp của vòng lặp:

Tên của thư mục hiện tạ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à

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80.

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80 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.
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80 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:

>>> import os
>>> entries = os.listdir['my_directory/']
9

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

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
83 từ mô -đun
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80. Tiếp theo, tạo một tệp như đối tượng bằng phương thức
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
85 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à

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
86, tạo ra
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80 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

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80, hãy sử dụng
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
89.

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

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80 đượ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à

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
91,
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
92,
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
93 và
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
94, theo thứ tự đó. Trên tất cả các nền tảng khác, các thư mục là
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
95,
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
96 và
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
97, theo thứ tự đó. Là phương sách cuối cùng,
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80 sẽ lưu các tệp và thư mục tạm thời trong thư mục hiện tại.

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
99 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
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50. 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:

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

Đ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.

with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
80 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
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:

>>>

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

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 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 cách sử dụng trình quản lý ngữ cảnh và tên của thư mục được lưu trữ 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
04. Dòng thứ ba in ra tên của thư mục tạm thời 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
05 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

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
05 trả về
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
60, đ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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

25,
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

27 và
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28. 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

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
12. 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
13.

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 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
13 giống hệt nhau về mặt ngữ nghĩa. Để xóa một tệp 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
12, hãy làm như sau:

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

Xóa tệp 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
13 tương tự như cách bạn thực hiệ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
12:

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

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
19 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
20 trên tệp xóa tệp khỏi hệ thống tập tin. Hai chức năng này sẽ ném
with open['data.txt', 'r'] as f:
    data = f.read[]
78 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ý
with open['data.txt', 'r'] as f:
    data = f.read[]
78:

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

84 Kiểm tra xem
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
24 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
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. Nế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
24 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:

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

Mã trên cố gắng xóa tệp trước khi kiểm tra loại của nó. Nế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
24 thực sự là một tệp, thì
with open['data.txt', 'r'] as f:
    data = f.read[]
78 được ném được xử lý trong mệ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
29 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

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 để xóa các tệp:

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

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

54 đượ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
24 trỏ đến một tệp. 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
20 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
24 sẽ xóa
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. Nế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
24 trỏ vào một thư mục, 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
37 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,
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
38 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:

  • 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
    
    39
  • 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
  • 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
    
    41

Để xóa một thư mục hoặc thư mục duy nhất, hãy 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
39 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
43. 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
with open['data.txt', 'r'] as f:
    data = f.read[]
78 sẽ được nâng lên. Đây là cách xóa một thư mục:

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

Ở đây, 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 bị xóa bằng cách chuyển đường dẫn của 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
39. 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:

>>>

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

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 để 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']
9

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

54 trỏ đến thư mục sẽ bị xóa. 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
49 trên đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

54 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

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
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
0

Mọi thứ 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
45 đều bị xóa khi
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
41 đượ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
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
69:

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

Đ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

with open['data.txt', 'r'] as f:
    data = f.read[]
78 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ả
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
Xóa một tệp và không xóa cá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
13
Giống hệt vớ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
12 và xóa một 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
11
Xóa một tệp và không thể xóa cá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
39
Xóa một thư mục trố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
40
Xóa một thư mục trố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
40
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
41

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
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

27.
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

27 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

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

27 cung cấp một vài chức năng để sao chép các tệp. Các chức năng được sử dụng phổ biến nhất 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
66 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
67. Để sao chép tệp từ vị trí này sang vị trí khác bằ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, hãy làm 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
66 có thể so sánh với lệ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 trong các hệ thống dựa trên UNIX.
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 sẽ sao chép 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
72 vào vị trí được chỉ định 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
73. Nế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
73 là một tệp, nội dung của tệp đó được thay thế bằng nội dung của
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
72. Nế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
73 là một thư mục, 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
72 sẽ được sao chép và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
66 chỉ sao chép nội dung của tệp và các quyền của tệp. Các siêu dữ liệu khác như thời gian tạo và sửa đổi tệp không được bảo 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
3

Để 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

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:

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
80 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ù

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ỉ sao chép một tệp duy nhấ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
82 sẽ sao chép toàn bộ thư mục và mọi thứ có 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
83 lấy 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.

>>>

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

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 để xóa các thư mục:

Ở đây, bạn tạo một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

54 trỏ đến thư mục sẽ bị xóa. 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
49 trên đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

54 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

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

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

28 để xóa các thư mục:

Ở đây, bạn tạo một đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

54 trỏ đến thư mục sẽ bị xóa. 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
49 trên đối tượng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

54 sẽ xóa nó nếu nó trống.

Xóa toàn bộ cây thư mụ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
6

Để xóa các thư mục không trống và toàn bộ cây thư mục, Python cung cấ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
41:

Mọi thứ 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
45 đều bị xóa khi
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
41 đượ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
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
69:

>>>

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

Đ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

with open['data.txt', 'r'] as f:
    data = f.read[]
78 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:

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.

Đọc các tập tin zip

Mô -đun

>>> import os
>>> entries = os.listdir['my_directory/']
07 là một mô -đun cấp thấp là một phần của thư viện tiêu chuẩn Python.
>>> import os
>>> entries = os.listdir['my_directory/']
07 có các chức năng giúp dễ dàng mở và trích xuất các tệp zip. Để đọc nội dung của tệp zip, điều đầu tiên cần làm là tạo đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
09. Các đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
09 tương tự như các đối tượng tệp được tạo bằng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

30.
>>> import os
>>> entries = os.listdir['my_directory/']
09 cũng là người quản lý bối cảnh và do đó hỗ trợ tuyên bố
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50:

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

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

>>> import os
>>> entries = os.listdir['my_directory/']
09, chuyển tên của tệp zip để mở ở chế độ đọc. Sau khi mở tệp zip, thông tin về kho lưu trữ có thể được truy cập thông qua các chức năng được cung cấp bởi mô -đun
>>> import os
>>> entries = os.listdir['my_directory/']
07. Lưu trữ
>>> import os
>>> entries = os.listdir['my_directory/']
16 trong ví dụ trên được tạo từ một thư mục có tên
with open['data.txt', 'w'] as f:
    data = 'some data to be written to the file'
    f.write[data]
08 chứa tổng cộng 5 tệp và 1 thư mục con:

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

Để có được danh sách các tệp trong kho lưu trữ, hãy gọi

>>> import os
>>> entries = os.listdir['my_directory/']
18 trên đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
09:

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

0

Điều này tạo ra một danh sách:

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

1

>>> import os
>>> entries = os.listdir['my_directory/']
20 Trả về một danh sách tên của các tệp và thư mục trong kho lưu trữ. Để truy xuất thông tin về các tệp trong kho lưu trữ, hãy sử dụng
>>> import os
>>> entries = os.listdir['my_directory/']
21:

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

2

Ở đây, đầu ra:

>>> import os
>>> entries = os.listdir['my_directory/']
21 Trả về một đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
23 lưu trữ thông tin về một thành viên duy nhất của kho lưu trữ. Để có được thông tin về một tệp trong kho lưu trữ, bạn chuyển đường dẫn của nó như một đối số cho
>>> import os
>>> entries = os.listdir['my_directory/']
21. Sử dụng
>>> import os
>>> entries = os.listdir['my_directory/']
25, bạn có thể truy xuất thông tin về các thành viên lưu trữ như ngày các tệp được sửa đổi lần cuối, kích thước nén và tên tệp đầy đủ của chúng. Truy cập
>>> import os
>>> entries = os.listdir['my_directory/']
26 Lấy tập tin kích thước ban đầu trong byte.

Ví dụ sau đây cho thấy cách lấy thêm chi tiết về các tệp được lưu trữ trong một Python replin. Giả sử rằng mô -đun

>>> import os
>>> entries = os.listdir['my_directory/']
07 đã được nhập và
>>> import os
>>> entries = os.listdir['my_directory/']
28 là cùng một đối tượng bạn đã tạo trong các ví dụ trước:

>>>

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

3

>>> import os
>>> entries = os.listdir['my_directory/']
28 chứa các chi tiết về
>>> import os
>>> entries = os.listdir['my_directory/']
30 như kích thước của nó khi được nén và đường dẫn đầy đủ của nó.

Dòng đầu tiên cho thấy cách truy xuất một tập tin ngày sửa đổi cuối cùng. Dòng tiếp theo cho thấy cách lấy kích thước của tệp sau khi nén. Dòng cuối cùng cho thấy đường dẫn đầy đủ của

>>> import os
>>> entries = os.listdir['my_directory/']
30 trong kho lưu trữ.

>>> import os
>>> entries = os.listdir['my_directory/']
09 hỗ trợ giao thức Trình quản lý bối cảnh, đó là lý do tại sao bạn có thể sử dụng nó với câu lệnh
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50. Thực hiện việc này tự động đóng đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
09 sau khi bạn đã thực hiện với nó. Cố gắng mở hoặc trích xuất các tệp từ đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
09 đã đóng sẽ dẫn đến lỗi.

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

Để tạo kho lưu trữ zip mới, bạn mở đối tượng

>>> import os
>>> entries = os.listdir['my_directory/']
09 ở chế độ ghi [
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

32] và thêm các tệp bạn muốn lưu trữ:

>>>

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

4

>>> import os
>>> entries = os.listdir['my_directory/']
28 chứa các chi tiết về
>>> import os
>>> entries = os.listdir['my_directory/']
30 như kích thước của nó khi được nén và đường dẫn đầy đủ của nó.

Dòng đầu tiên cho thấy cách truy xuất một tập tin ngày sửa đổi cuối cùng. Dòng tiếp theo cho thấy cách lấy kích thước của tệp sau khi nén. Dòng cuối cùng cho thấy đường dẫn đầy đủ của

>>> import os
>>> entries = os.listdir['my_directory/']
30 trong kho lưu trữ.

>>>

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

5

>>> import os
>>> entries = os.listdir['my_directory/']
28 chứa các chi tiết về
>>> import os
>>> entries = os.listdir['my_directory/']
30 như kích thước của nó khi được nén và đường dẫn đầy đủ của nó.

Dòng đầu tiên cho thấy cách truy xuất một tập tin ngày sửa đổi cuối cùng. Dòng tiếp theo cho thấy cách lấy kích thước của tệp sau khi nén. Dòng cuối cùng cho thấy đường dẫn đầy đủ của
>>> import os
>>> entries = os.listdir['my_directory/']
30 trong kho lưu trữ.

>>> import os
>>> entries = os.listdir['my_directory/']
09 hỗ trợ giao thức Trình quản lý bối cảnh, đó là lý do tại sao bạn có thể sử dụng nó với câu lệnh
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50. Thực hiện việc này tự động đóng đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
09 sau khi bạn đã thực hiện với nó. Cố gắng mở hoặc trích xuất các tệp từ đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
09 đã đóng sẽ dẫn đến lỗi.

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

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

6

Để tạo kho lưu trữ zip mới, bạn mở đối tượng

>>> import os
>>> entries = os.listdir['my_directory/']
09 ở chế độ ghi [
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

32] và thêm các tệp bạn muốn lưu trữ:

Trong ví dụ,

>>> import os
>>> entries = os.listdir['my_directory/']
38 được mở ở chế độ ghi và mỗi tệp trong
>>> import os
>>> entries = os.listdir['my_directory/']
39 được thêm vào kho lưu trữ. Khi bộ tuyên bố
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50 kết thúc,
>>> import os
>>> entries = os.listdir['my_directory/']
38 đã 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
>>> import os
>>> entries = os.listdir['my_directory/']
09 ở chế độ Phụ lục và sau đó thêm các tệp:Tại đây, bạn mở kho lưu trữ
>>> import os
>>> entries = os.listdir['my_directory/']
43 mà bạn đã tạo trong ví dụ trước trong chế độ nối. Mở đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
09 ở 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
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50 đi ra khỏi ngữ cảnh và đóng tệp zip.
Mở tài liệu lưu trữ tarCá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
>>> import os
>>> entries = os.listdir['my_directory/']
46 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ữ:Các đối tượng
>>> import os
>>> entries = os.listdir['my_directory/']
47 Mở như hầu hết các đối tượng giống như tệp. Chúng có chức năng
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

30 có chế độ xác định cách mở tệp.
Sử dụng các chế độ
>>> import os
>>> entries = os.listdir['my_directory/']
49,
>>> import os
>>> entries = os.listdir['my_directory/']
50 hoặc
>>> import os
>>> entries = os.listdir['my_directory/']
51 để mở một tệp TAR không nén để đọc, viết và nối lại, tương ứng. Để mở các tệp TAR được nén, chuyển trong một đối số chế độ sang
>>> import os
>>> entries = os.listdir['my_directory/']
52 ở dạng
>>> import os
>>> entries = os.listdir['my_directory/']
53. Bảng dưới đây liệt kê các tệp TAR có thể có thể được mở trong:
Cách thức
Hoạt động
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

31
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

32
Mở lưu trữ cho văn bản không nén
>>> import os
>>> entries = os.listdir['my_directory/']
59
Mở kho lưu trữ cho văn bản nén GZIP
>>> import os
>>> entries = os.listdir['my_directory/']
60
Mở lưu trữ cho văn bản nén LZMA
>>> import os
>>> entries = os.listdir['my_directory/']
61
Mở kho lưu trữ để nối thêm không có nén

>>> import os
>>> entries = os.listdir['my_directory/']
62 Mặc định cho chế độ
>>> import os
>>> entries = os.listdir['my_directory/']
49. Để đọ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
>>> import os
>>> entries = os.listdir['my_directory/']
64:

>>>

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

7

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

>>>

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

8

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

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

>>> import os
>>> entries = os.listdir['my_directory/']
65 và in ra từng thuộc tính của tệp. Các đối tượng được trả về bởi
>>> import os
>>> entries = os.listdir['my_directory/']
65 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.

>>>

>>> import os
>>> entries = os.scandir['my_directory/']
>>> entries

9

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

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

>>> import os
>>> entries = os.listdir['my_directory/']
65 và in ra từng thuộc tính của tệp. Các đối tượng được trả về bởi
>>> import os
>>> entries = os.listdir['my_directory/']
65 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

>>>

import os

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

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

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

>>> import os
>>> entries = os.listdir['my_directory/']
65 và in ra từng thuộc tính của tệp. Các đối tượng được trả về bởi
>>> import os
>>> entries = os.listdir['my_directory/']
65 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

>>>

import os

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

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

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

>>> import os
>>> entries = os.listdir['my_directory/']
65 và in ra từng thuộc tính của tệp. Các đối tượng được trả về bởi
>>> import os
>>> entries = os.listdir['my_directory/']
65 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 đó:

Đầ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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50 để mở một kho lưu trữ mới có tên
>>> import os
>>> entries = os.listdir['my_directory/']
68 ở chế độ ghi. Mở một kho lưu trữ trong chế độ ghi [________ 550] 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
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

50 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ợ [

>>> import os
>>> entries = os.listdir['my_directory/']
51]:

import os

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

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

>>> import os
>>> entries = os.listdir['my_directory/']
47 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
>>> import os
>>> entries = os.listdir['my_directory/']
52, chuyển ở chế độ thích hợp cho loại nén.

import os

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

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ế độ

>>> import os
>>> entries = os.listdir['my_directory/']
74 hoặc
>>> import os
>>> entries = os.listdir['my_directory/']
75 tương ứng:

Chế độ

>>> import os
>>> entries = os.listdir['my_directory/']
75 mở kho lưu trữ cho văn bản nén GZIP và
>>> import os
>>> entries = os.listdir['my_directory/']
74 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ữ

import os

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

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

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

27. Các tiện ích lưu trữ trong
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate['*.txt']
>>> regex
'[?s:.*\\.txt]\\Z'
>>> reobj = re.compile[regex]
>>> reobj.match['foobar.txt']

27 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
>>> import os
>>> entries = os.listdir['my_directory/']
47 và
>>> import os
>>> entries = os.listdir['my_directory/']
07.

import os

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

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

>>> import os
>>> entries = os.listdir['my_directory/']
82

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
    >>> import fnmatch, re
    >>>
    >>> regex = fnmatch.translate['*.txt']
    >>> regex
    '[?s:.*\\.txt]\\Z'
    >>> reobj = re.compile[regex]
    >>> reobj.match['foobar.txt']
    
    
    29

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

Làm cách nào để đọc một thư mục cụ thể trong Python?

Nó chỉ lấy một đối số duy nhất làm đường dẫn thư mục mới ...

Nhập mô -đun ..

Thêm đường dẫn của thư mục ..

Thay đổi thư mục ..

Nhận danh sách một tệp từ một thư mục ..

Lặp lại thông qua danh sách tệp và kiểm tra xem phần mở rộng của tệp có ở hay không. Định dạng TXT hay không ..

Nếu tệp văn bản tồn tại, hãy đọc tệp bằng cách xử lý tệp ..

Làm cách nào để in nội dung của một thư mục trong Python?

Đối với bài viết này, các phương pháp sau từ mô -đun HĐH sẽ được yêu cầu:..

hệ điều hành. StartFile []: Phương thức này in nội dung của một tệp đã cho. Cú pháp: Os.StartFile [đường dẫn, hoạt động = 'mở'] ....

hệ điều hành. ListDir []: Phương thức này liệt kê tất cả các tệp và thư mục trong một thư mục nhất định. ....

hệ điều hành. đường dẫn..

Làm cách nào để liệt kê tất cả các tệp của một thư mục?

Để liệt kê tất cả các tệp trong thư mục hiện tại, hãy nhập các loại sau: LS -a này liệt kê tất cả các tệp, bao gồm. DOT [.] ....

Để hiển thị thông tin chi tiết, hãy nhập các loại sau: LS -L Chap1 .Profile. ....

Để hiển thị thông tin chi tiết về một thư mục, hãy nhập như sau: ls -d -l ..

Làm cách nào để đọc danh sách các tệp trong Python?

Để 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, hãy sử dụng os.listdir [] trong các phiên bản cũ của Python hoặc Os.Scandir [] trong Python 3.x.use os. listdir[] in legacy versions of Python or os. scandir[] in Python 3. x.

Bài Viết Liên Quan

Chủ Đề