Pathlib Python thành chuỗi

Khi tôi bắt đầu học Python, có một điều tôi luôn gặp khó khăn. xử lý các thư mục và đường dẫn tệp

Show

Tôi nhớ cuộc đấu tranh để điều khiển các đường dẫn dưới dạng chuỗi bằng cách sử dụng mô-đun

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
5. Tôi đã liên tục tra cứu các thông báo lỗi liên quan đến thao tác đường dẫn không đúng cách

Mô-đun

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
5 chưa bao giờ cảm thấy trực quan và thuận tiện đối với tôi, nhưng may mắn của tôi đã thay đổi khi
>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 hạ cánh trong Python 3. 4. Đó là một luồng không khí trong lành, dễ sử dụng hơn nhiều và khiến tôi cảm thấy Pythonic hơn

Vấn đề duy nhất là. tìm các ví dụ về cách sử dụng nó thật khó; . Và vâng, tài liệu của Python rất tốt, nhưng đối với người mới, các ví dụ là bắt buộc

Mặc dù các tài liệu bây giờ tốt hơn nhiều, nhưng chúng không hiển thị mô-đun theo cách giải quyết vấn đề. Đó là lý do tại sao tôi quyết định tạo cuốn sách dạy nấu ăn này

Bài viết này là nơi tổng hợp tất cả những gì tôi biết về

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7. Nó có nghĩa là một tài liệu tham khảo chứ không phải là một hướng dẫn tuyến tính. Vui lòng chuyển đến các phần phù hợp hơn với bạn

Trong hướng dẫn này, chúng ta sẽ xem xét hàng chục trường hợp sử dụng như

  • cách tạo (chạm) một tệp trống
  • cách chuyển đổi đường dẫn thành chuỗi
  • lấy thư mục chính
  • tạo các thư mục mới, thực hiện đệ quy và xử lý các sự cố khi chúng
  • lấy thư mục làm việc hiện tại
  • lấy phần mở rộng tệp từ tên tệp
  • lấy thư mục mẹ của tệp hoặc tập lệnh
  • đọc và ghi văn bản hoặc tệp nhị phân
  • làm thế nào để xóa các tập tin
  • cách tạo thư mục lồng nhau
  • cách liệt kê tất cả các tệp và thư mục trong một thư mục
  • cách liệt kê tất cả các thư mục con theo cách đệ quy
  • làm thế nào để loại bỏ một thư mục cùng với nội dung của nó

Tôi hy vọng bạn vui

Mục lục

>>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7 trong Python là gì?

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 là một mô-đun Python được tạo để giúp làm việc với các đường dẫn trong hệ thống tệp dễ dàng hơn. Mô-đun này đã ra mắt trong Python 3. 4 và được đề xuất bởi PEP 428

Trước Python 3. 4, mô-đun

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
5 từ thư viện tiêu chuẩn là mô-đun chuyển đến để xử lý các đường dẫn.
>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
5 cung cấp một số chức năng thao tác các đường dẫn được biểu thị dưới dạng chuỗi Python đơn giản. Ví dụ: để nối hai đường dẫn bằng cách sử dụng
>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
5, người ta có thể sử dụng hàm_______9_______4

>>> import os
>>> os.path.join('/home/user', 'projects')
'/home/user/projects'

>>> os.path.expanduser('~')
'C:\\Users\\Miguel'

>>> home = os.path.expanduser('~')

>>> os.path.join(home, 'projects')
'C:\\Users\\Miguel\\projects'

Biểu diễn các đường dẫn dưới dạng chuỗi khuyến khích các nhà phát triển Python thiếu kinh nghiệm thực hiện các thao tác đường dẫn chung bằng phương thức chuỗi. Ví dụ: tham gia các đường dẫn bằng

>>> from pathlib import Path

>>> print(f'This is the current directory: {Path.cwd()}')
This is the current directory: /home/miguel/Desktop/pathlib
5 thay vì sử dụng
>>> from pathlib import Path

>>> print(f'This is the current directory: {Path.cwd()}')
This is the current directory: /home/miguel/Desktop/pathlib
6, điều này có thể dẫn đến các lỗi nhỏ và khiến mã khó sử dụng lại trên nhiều nền tảng

Hơn nữa, nếu bạn muốn các hoạt động của đường dẫn không phụ thuộc vào nền tảng, bạn sẽ cần nhiều cuộc gọi đến các hàm

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
5 khác nhau, chẳng hạn như
>>> from pathlib import Path

>>> print(f'This is the current directory: {Path.cwd()}')
This is the current directory: /home/miguel/Desktop/pathlib
8,
>>> from pathlib import Path

>>> print(f'This is the current directory: {Path.cwd()}')
This is the current directory: /home/miguel/Desktop/pathlib
9, v.v.

Trong nỗ lực khắc phục những sự cố này, Python 3. 4 kết hợp mô-đun

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7. Nó cung cấp một sự trừu tượng cấp cao hoạt động tốt trong các hệ thống POSIX, chẳng hạn như Linux cũng như Windows. Nó trừu tượng hóa cách biểu diễn của đường dẫn và cung cấp các hoạt động dưới dạng các phương thức

Giải phẫu của một >>> from pathlib import Path >>> Path.cwd() PosixPath('/home/miguel/Desktop/pathlib') 0

Để dễ hiểu hơn về các thành phần cơ bản của một

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
02, trong phần này, chúng ta sẽ tìm hiểu các thành phần cơ bản của chúng

Pathlib Python thành chuỗi

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']

Pathlib Python thành chuỗi

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']

Cách chuyển đổi đường dẫn thành chuỗi

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 triển khai phương thức
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
04 kỳ diệu và chúng ta có thể sử dụng nó để chuyển đổi một đường dẫn thành chuỗi. Việc triển khai phương thức này có nghĩa là bạn có thể lấy biểu diễn chuỗi của nó bằng cách chuyển nó tới hàm tạo
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
05, như trong ví dụ bên dưới

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"

Ví dụ trên minh họa một

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
06, nhưng bạn cũng có thể chuyển đổi WindowsPath thành chuỗi bằng cơ chế tương tự

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"

Cách tham gia một đường dẫn bằng cách thêm các phần hoặc các đường dẫn khác

Một trong những điều tôi thích nhất về

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 là việc kết hợp hai hoặc nhiều đường hoặc phần trở lên dễ dàng như thế nào. Có ba cách chính bạn có thể làm điều đó

  • bạn có thể chuyển tất cả các phần riêng lẻ của đường dẫn tới hàm tạo
  • sử dụng phương pháp
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    08
  • sử dụng toán tử
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    09
>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')

Trên Windows, thay vào đó,

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
02 trả về một
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
11, nhưng nó hoạt động giống như trong Linux

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')

Làm việc với các thư mục bằng cách sử dụng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Trong phần này, chúng ta sẽ xem cách chúng ta có thể duyệt qua hoặc đi bộ qua các thư mục với

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7. Và khi nói đến việc điều hướng các thư mục, chúng ta có thể làm nhiều việc, chẳng hạn như

Cách lấy thư mục làm việc hiện tại (cwd) với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Mô-đun

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 cung cấp một classmethod
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
16 để lấy thư mục làm việc hiện tại trong Python. Nó trả về một phiên bản PosixPath trên Linux hoặc các hệ thống Unix khác như macOS hoặc OpenBSD. Dưới mui xe,
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
16 chỉ là một vỏ bọc cho
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
18 cổ điển

>>> from pathlib import Path

>>> Path.cwd()
PosixPath('/home/miguel/Desktop/pathlib')

Trên Windows, nó trả về WindowsPath

>>> from pathlib import Path

>>> Path.cwd()
>>> WindowsPath('C:/Users/Miguel/pathlib')

Bạn cũng có thể in nó bằng cách chuyển đổi nó thành chuỗi bằng cách sử dụng chuỗi f chẳng hạn

>>> from pathlib import Path

>>> print(f'This is the current directory: {Path.cwd()}')
This is the current directory: /home/miguel/Desktop/pathlib

Tái bút. nếu bạn

Cách lấy thư mục chính với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Khi

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 xuất hiện trong Python 3. 4,
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
02 không có phương thức điều hướng đến thư mục chính. Điều này đã thay đổi trên Python 3. 5, bao gồm cả phương pháp
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
22

Trong Trăn 3. 4, người ta phải sử dụng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
23, điều này thật khó xử và không trực quan

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
0

Từ Python 3. 5 trở đi, bạn chỉ cần gọi

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
22

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
1

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
22 cũng hoạt động tốt trên Windows

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
2

Cách mở rộng thành phần đường dẫn ban đầu với >>> from pathlib import Path >>> Path.cwd() PosixPath('/home/miguel/Desktop/pathlib') 4

Trong các hệ thống Unix, thư mục chính có thể được mở rộng bằng cách sử dụng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
27 ( ký hiệu dấu ngã). Ví dụ: điều này cho phép chúng tôi biểu diễn các đường dẫn đầy đủ như thế này.
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
28 như vừa rồi.
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
29

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
3

Mặc dù phổ biến hơn trên các hệ thống Unix, biểu diễn này cũng hoạt động trên Windows

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
4

Ngược lại với

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
30 là gì?

Thật không may, mô-đun

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 không có bất kỳ phương thức nào để thực hiện thao tác nghịch đảo. Nếu bạn muốn cô đọng đường dẫn mở rộng trở lại phiên bản ngắn hơn, bạn cần lấy đường dẫn liên quan đến thư mục chính của bạn bằng cách sử dụng
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
32 và đặt
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
27 trước nó

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
5

Tạo thư mục với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Một thư mục không gì khác hơn là một vị trí để lưu trữ các tệp và các thư mục khác, còn được gọi là thư mục.

>>> from pathlib import Path

>>> Path.cwd()
PosixPath('/home/miguel/Desktop/pathlib')
0 đi kèm với một phương thức để tạo các thư mục mới có tên là
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
36

Phương thức này có ba đối số

  • >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    37. Được sử dụng để xác định chế độ tệp và cờ truy cập
  • >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    38. Tương tự như lệnh
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    39 trong hệ thống Unix. Mặc định là
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    40, điều đó có nghĩa là nó sẽ phát sinh lỗi nếu thiếu thư mục gốc hoặc nếu thư mục đã được tạo. Khi đó là
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    41,
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    42 tạo các thư mục mẹ bị thiếu
  • >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    43. Mặc định là
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    40 và tăng
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    45 nếu thư mục được tạo đã tồn tại. Khi bạn đặt nó thành
    >>> from pathlib import Path
    
    >>> path = Path('/home/miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    '/'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    '/'
    
    >>> path.parent
    PosixPath('/home/miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    41,
    >>> Path('.', 'projects', 'python', 'source')
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python') / Path('source')
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python') / 'source'
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python').joinpath('source')
    WindowsPath('projects/python/source')
    
    7 sẽ bỏ qua lỗi nếu phần cuối cùng của đường dẫn không phải là tệp không có thư mục hiện có
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
6

Tạo một thư mục đã tồn tại

Khi bạn có một đường dẫn thư mục và nó đã tồn tại, Python sẽ tăng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
45 nếu bạn gọi
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
36 trên đó. Trong phần trước, chúng tôi đã đề cập ngắn gọn rằng điều này xảy ra bởi vì theo mặc định, đối số
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
43 được đặt thành
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
40

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
7

Để tạo một thư mục đã tồn tại, bạn cần đặt

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
43 thành
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
41. Điều này hữu ích nếu bạn không muốn kiểm tra bằng cách sử dụng
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
54 hoặc xử lý các trường hợp ngoại lệ chẳng hạn. Một lợi ích khác là thư mục không trống,
>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 sẽ không ghi đè lên nó

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
8

Cách tạo đệ quy thư mục mẹ nếu không tồn tại

Đôi khi bạn có thể muốn tạo không chỉ một thư mục mà còn cả thư mục mẹ và thư mục con cùng một lúc

Tin tốt là

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
36 có thể xử lý tốt các tình huống như thế này nhờ lập luận
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
38 của nó. Khi
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
38 được đặt thành
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
41, thì
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
42 sẽ tạo các thư mục mẹ bị thiếu;

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
9

Cách liệt kê tất cả các tệp và thư mục

Có nhiều cách bạn có thể liệt kê các tệp trong một thư mục bằng Python's

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7. Chúng ta sẽ thấy từng người trong phần này

Để liệt kê tất cả các tệp trong một thư mục, bao gồm cả các thư mục khác, bạn có thể sử dụng phương thức

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
63. Vì lý do hiệu suất, nó trả về một trình tạo mà bạn có thể sử dụng để lặp lại nó hoặc chỉ cần chuyển đổi thành danh sách để thuận tiện

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
0

Sử dụng >>> from pathlib import Path >>> Path.cwd() PosixPath('/home/miguel/Desktop/pathlib') 5 để chỉ liệt kê các thư mục

Chúng ta đã thấy rằng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
65 trả về một danh sách các
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
02. Để chỉ liệt kê các thư mục trong một thư mục, bạn có thể sử dụng phương pháp
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
67. Ví dụ bên dưới sẽ lấy tất cả các tên thư mục bên trong thư mục

⚠️ CẢNH BÁO. Ví dụ này chỉ liệt kê các thư mục con trực tiếp trong Python. Trong tiểu mục tiếp theo, chúng ta sẽ xem cách liệt kê tất cả các thư mục con

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
1

Nhận danh sách tất cả các thư mục con trong thư mục hiện tại theo cách đệ quy

Trong phần này, chúng ta sẽ xem cách điều hướng trong thư mục và thư mục con. Lần này chúng ta sẽ sử dụng một phương pháp khác từ

>>> from pathlib import Path

>>> Path.cwd()
PosixPath('/home/miguel/Desktop/pathlib')
0 có tên là
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
69

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
2

Như bạn thấy,

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
70 cũng sẽ in thư mục con
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
71

Việc nhớ chuyển

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
72 đến
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
73 hơi khó chịu, nhưng có một cách để đơn giản hóa việc này bằng cách sử dụng
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
74

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
3

Cách chỉ liệt kê các tệp có >>> from pathlib import Path >>> path = Path('/home/miguel/projects/blog/config.tar.gz') >>> path.drive '/' >>> path.root '/' >>> path.anchor '/' >>> path.parent PosixPath('/home/miguel/projects/blog') >>> path.name 'config.tar.gz' >>> path.stem 'config.tar' >>> path.suffix '.gz' >>> path.suffixes ['.tar', '.gz'] 75

Giống như

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 cung cấp một phương thức để kiểm tra xem một đường dẫn có phải là một thư mục hay không, nó cũng cung cấp một phương thức để kiểm tra xem một đường dẫn có phải là một tệp không. Phương pháp này được gọi là
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
77 và bạn có thể sử dụng để lọc ra các thư mục và in tất cả các tên tệp trong một thư mục

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
4

⚠️ CẢNH BÁO. Ví dụ này chỉ liệt kê các tệp bên trong thư mục hiện tại. Trong tiểu mục tiếp theo, chúng ta sẽ xem cách liệt kê tất cả các tệp bên trong thư mục con

Một trường hợp sử dụng thú vị khác là sử dụng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
63 để đếm số lượng tệp trong một thư mục

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
5

Cách lặp lại đệ quy qua tất cả các tệp

Trong các phần trước, chúng tôi đã sử dụng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
74 để liệt kê tất cả các thư mục theo cách đệ quy, chúng tôi có thể làm tương tự cho các tệp bằng cách lọc các đường dẫn bằng phương pháp
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
77

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
6

Cách liệt kê đệ quy tất cả các tệp có phần mở rộng hoặc mẫu nhất định

Trong ví dụ trước, chúng tôi liệt kê tất cả các tệp trong một thư mục, nhưng nếu chúng tôi muốn lọc theo phần mở rộng thì sao?

Trong ví dụ bên dưới, chúng tôi liệt kê tất cả các tệp

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
85 theo cách đệ quy

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
7

Chúng ta có thể sử dụng thủ thuật tương tự cho các loại tệp khác. Ví dụ: chúng tôi có thể muốn liệt kê tất cả các hình ảnh trong một thư mục hoặc thư mục con

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
8

Chúng tôi thực sự có thể đơn giản hóa nó hơn nữa, chúng tôi chỉ có thể sử dụng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
70 và
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
87 để khớp. (Cảm ơn
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
88 và
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
89 đã chỉ ra. )

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
9

Cách thay đổi thư mục bằng Python pathlib

Thật không may,

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 không có phương thức tích hợp để thay đổi thư mục. Tuy nhiên, có thể kết hợp nó với hàm
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
91 và sử dụng nó để thay đổi thư mục hiện tại thành một thư mục khác

⚠️ CẢNH BÁO. Đối với các phiên bản trước 3. 6,

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
92 chỉ chấp nhận đường dẫn dưới dạng chuỗi

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
0

Cách xóa thư mục bằng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Xóa thư mục bằng cách sử dụng

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 tùy thuộc vào việc thư mục có trống hay không. Để xóa một thư mục trống, chúng ta có thể sử dụng phương pháp
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
95

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
1

Nếu chúng tôi đặt một số tệp hoặc thư mục khác bên trong và cố gắng xóa,

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
95 sẽ phát sinh lỗi

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
2

Bây giờ, câu hỏi là. làm cách nào để xóa các thư mục không trống bằng

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7?

Đây là những gì chúng ta sẽ thấy tiếp theo

Cách xóa một thư mục cùng với nội dung của nó bằng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Để xóa một thư mục không trống, chúng ta cần xóa nội dung của nó, mọi thứ

Để làm điều đó với

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7, chúng ta cần tạo một hàm sử dụng
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
63 để đi bộ hoặc duyệt qua thư mục và

  • nếu đường dẫn là một tệp, chúng tôi gọi
    >>> from pathlib import Path
    
    >>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    'C:'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    'C:/'
    
    >>> path.parent
    WindowsPath('C:/Users/Miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    01
  • mặt khác, chúng ta gọi hàm đệ quy. Khi không còn tệp nào nữa, nghĩa là khi thư mục trống, chỉ cần gọi _____18_______95

Hãy sử dụng ví dụ sau về một thư mục không trống với các thư mục và tệp lồng nhau trong đó

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
3

Để loại bỏ nó, chúng ta có thể sử dụng hàm đệ quy sau

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
4

Sau đó, chúng tôi gọi nó cho thư mục gốc, bao gồm

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
5

Tôi cần thành thật mà nói, giải pháp này hoạt động tốt nhưng nó không phải là giải pháp phù hợp nhất.

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 không phù hợp với các loại hoạt động này

Theo đề xuất của

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
04 từ reddit, cách tiếp cận tốt hơn là sử dụng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
6

Làm việc với các tập tin

Trong phần này, chúng ta sẽ sử dụng

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 để thực hiện các thao tác trên một tệp, chẳng hạn, chúng ta sẽ xem cách chúng ta có thể

  • tạo tập tin mới
  • sao chép các tập tin hiện có
  • xóa các tệp có
    >>> Path('.', 'projects', 'python', 'source')
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python') / Path('source')
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python') / 'source'
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python').joinpath('source')
    WindowsPath('projects/python/source')
    
    7
  • đọc và ghi tệp với
    >>> Path('.', 'projects', 'python', 'source')
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python') / Path('source')
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python') / 'source'
    WindowsPath('projects/python/source')
    
    >>> Path('.', 'projects', 'python').joinpath('source')
    WindowsPath('projects/python/source')
    
    7

Cụ thể, chúng ta sẽ học cách

Cách chạm (tạo trống) một tệp

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 cung cấp một phương thức để tạo một tệp trống tên là
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
10. Phương pháp này rất tiện dụng khi bạn cần tạo một tệp giữ chỗ nếu nó không tồn tại

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
7

Chạm vào tệp có dấu thời gian

Để tạo một tệp trống có dấu thời gian, trước tiên chúng ta cần xác định định dạng dấu thời gian

Một cách để làm điều đó là sử dụng

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
11 và
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
12. Đầu tiên, chúng tôi xác định định dạng ngày, sau đó chúng tôi sử dụng mô-đun
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
12 để tạo đối tượng ngày giờ. Sau đó, chúng tôi sử dụng
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
14 để lấy lại dấu thời gian

Khi chúng tôi có dấu thời gian, chúng tôi chỉ có thể sử dụng chuỗi f để tạo tên tệp

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
8

Cách chạm vào tệp và tạo thư mục mẹ

Một vấn đề phổ biến khác khi tạo các tệp trống là đặt chúng vào một thư mục chưa tồn tại. Lý do là

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
15 chỉ hoạt động nếu thư mục tồn tại. Để minh họa điều đó, hãy xem một ví dụ

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/tutorial')

>>> str(path)
'/home/miguel/projects/tutorial'

>>> repr(path)
"PosixPath('/home/miguel/projects/blog/config.tar.gz')"
9

Nếu thư mục đích không tồn tại,

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 tăng
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
17. Để khắc phục điều đó, trước tiên chúng ta cần tạo thư mục, cách đơn giản nhất, như được mô tả trong phần , là sử dụng
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
18. Phương thức này tạo một thư mục trống bao gồm tất cả các thư mục mẹ

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
0

Cách lấy tên tệp từ đường dẫn

Một

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
02 không chỉ có phương thức mà còn có cả thuộc tính. Một trong số đó là
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
20, đúng như tên gọi của nó, trả về tên tệp của đường dẫn. Thuộc tính này bỏ qua các thư mục mẹ và chỉ trả lại tên tệp bao gồm phần mở rộng

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
1

Cách lấy tên tệp không có phần mở rộng

Đôi khi, bạn có thể cần truy xuất tên tệp không có phần mở rộng. Một cách tự nhiên để làm điều này là tách chuỗi trên dấu chấm. Tuy nhiên,

>>> from pathlib import Path

>>> Path.cwd()
PosixPath('/home/miguel/Desktop/pathlib')
0 đi kèm với một thuộc tính trợ giúp khác có tên là
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
22, trả về thành phần cuối cùng của đường dẫn mà không có phần mở rộng

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
2

Cách lấy phần mở rộng tệp từ tên tệp bằng cách sử dụng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Nếu thuộc tính

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
22 trả về tên tệp không bao gồm phần mở rộng, làm thế nào chúng ta có thể làm điều ngược lại?

Chúng ta có thể làm điều đó bằng cách sử dụng thuộc tính

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
25

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
3

Một số tệp, chẳng hạn như

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
26 có hai phần là phần mở rộng và
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
25 sẽ chỉ trả về phần cuối cùng. Để có được toàn bộ phần mở rộng, bạn cần thuộc tính
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
28

Thuộc tính này trả về danh sách tất cả các hậu tố cho đường dẫn đó. Sau đó, chúng ta có thể sử dụng nó để nối danh sách thành một chuỗi

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
4

Cách mở tệp để đọc bằng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Một tính năng tuyệt vời khác từ

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 là khả năng mở tệp được trỏ tới bằng đường dẫn. Hành vi tương tự như chức năng
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
31 tích hợp. Trên thực tế, nó chấp nhận khá nhiều tham số giống nhau

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
5

Cách đọc tệp văn bản với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Trong phần trước, chúng ta đã sử dụng phương thức

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
33 và hàm
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
34 để đọc nội dung của tệp văn bản dưới dạng chuỗi. Mặc dù nó hoạt động bình thường nhưng bạn vẫn cần đóng tệp hoặc sử dụng từ khóa
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
35 để đóng tệp tự động

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 đi kèm với một phương pháp
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
37 thực hiện điều đó cho bạn, thuận tiện hơn nhiều

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
6

Tệp được mở rồi đóng lại. Các tham số tùy chọn có cùng ý nghĩa như trong open().

Cách đọc tệp JSON từ đường dẫn với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Một tệp JSON không gì khác hơn là một tệp văn bản được cấu trúc theo đặc tả JSON. Để đọc JSON, chúng ta có thể mở đường dẫn để đọc—như cách chúng ta làm với tệp văn bản—và sử dụng hàm

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
39 từ mô-đun
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
40

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
7

Cách đọc tệp nhị phân với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Đến đây nếu bạn biết cách đọc file text thì việc đọc file nhị phân sẽ dễ dàng. Chúng ta có thể làm điều này theo hai cách

  • với phương thức
    >>> from pathlib import Path
    
    >>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    'C:'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    'C:/'
    
    >>> path.parent
    WindowsPath('C:/Users/Miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    33 chuyển các cờ
    >>> from pathlib import Path
    
    >>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    'C:'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    'C:/'
    
    >>> path.parent
    WindowsPath('C:/Users/Miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    43
  • với phương pháp
    >>> from pathlib import Path
    
    >>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    'C:'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    'C:/'
    
    >>> path.parent
    WindowsPath('C:/Users/Miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    44

Hãy bắt đầu với phương pháp đầu tiên

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
8

Và cũng giống như

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
45,
>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 đi kèm với một phương thức
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
47 có thể mở và đóng tệp cho bạn

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

# when we convert a WindowsPath to string, Python adds backslashes
>>> str(path)
'C:\\Users\\Miguel\\projects\\blog\\config.tar.gz'

# whereas repr returns the path with forward slashes as it is represented on Windows
>>> repr(path)
"WindowsPath('C:/Users/Miguel/projects/blog/config.tar.gz')"
9

Cách mở tất cả các tệp trong một thư mục bằng Python

Hãy tưởng tượng bạn cần một tập lệnh Python để tìm kiếm tất cả các tệp trong một thư mục và mở tất cả chúng. Có thể bạn muốn lọc theo tiện ích mở rộng hoặc bạn muốn thực hiện theo cách đệ quy. Nếu bạn đã làm theo hướng dẫn này ngay từ đầu, thì bây giờ bạn đã biết

Để mở tất cả các tệp trong một thư mục, chúng ta có thể kết hợp

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
63 với
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
77

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
0

Nếu bạn cần thực hiện đệ quy, chúng ta có thể sử dụng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
74 thay vì
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
63

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
1

Cách viết một tệp văn bản với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Trong các phần trước, chúng ta đã biết cách đọc tệp văn bản bằng cách sử dụng

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
45

Để ghi một tệp văn bản vào đĩa,

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 đi kèm với một
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
56. Lợi ích của việc sử dụng phương pháp này là nó ghi dữ liệu và đóng tệp cho bạn, đồng thời

⚠️ CẢNH BÁO. Nếu bạn mở một tệp hiện có,

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
56 sẽ ghi đè lên tệp đó

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
2

Cách ghi tệp JSON vào đường dẫn với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Python đại diện cho các đối tượng JSON dưới dạng từ điển đơn giản, để ghi chúng vào một tệp dưới dạng JSON bằng cách sử dụng

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7, chúng ta cần kết hợp hàm
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
60 và
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
33, giống như cách chúng ta đã làm để đọc JSON từ đĩa

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
3

Cách ghi dữ liệu byte vào tệp

Để ghi byte vào một tệp, chúng ta có thể sử dụng phương thức

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
33 truyền cờ
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
63 hoặc phương thức
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
64

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
4

Cách sao chép tệp bằng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 không thể sao chép tập tin. Tuy nhiên, nếu chúng tôi có một tệp được biểu thị bằng một đường dẫn không có nghĩa là chúng tôi không thể sao chép nó. Có hai cách khác nhau để làm điều đó

  • sử dụng mô-đun
    >>> from pathlib import Path
    
    >>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    'C:'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    'C:/'
    
    >>> path.parent
    WindowsPath('C:/Users/Miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    67
  • sử dụng các phương pháp
    >>> from pathlib import Path
    
    >>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    'C:'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    'C:/'
    
    >>> path.parent
    WindowsPath('C:/Users/Miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    44 và
    >>> from pathlib import Path
    
    >>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')
    
    >>> path.drive
    'C:'
    
    >>> path.root
    '/'
    
    >>> path.anchor
    'C:/'
    
    >>> path.parent
    WindowsPath('C:/Users/Miguel/projects/blog')
    
    >>> path.name
    'config.tar.gz'
    
    >>> path.stem
    'config.tar'
    
    >>> path.suffix
    '.gz'
    
    >>> path.suffixes
    ['.tar', '.gz']
    
    64

Đối với phương án đầu tiên, chúng tôi sử dụng hàm

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
70 và chuyển đường dẫn nguồn và đích

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
5

⚠️ CẢNH BÁO.

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
67 trước Python 3. 6 không thể xử lý các trường hợp
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
02. Trước tiên, bạn cần chuyển đổi đường dẫn thành chuỗi

Phương pháp thứ hai liên quan đến việc sao chép toàn bộ tệp, sau đó ghi tệp đó vào một đích khác

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
6

⚠️ CẢNH BÁO. Phương pháp này sẽ ghi đè lên đường dẫn đích. Nếu đó là vấn đề đáng lo ngại, bạn nên kiểm tra xem tệp có tồn tại trước hay không hoặc mở tệp ở chế độ ghi bằng cách sử dụng cờ

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
73. Cờ này sẽ mở tệp độc quyền tạo, do đó không thành công với
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
45 nếu tệp đã tồn tại

Một nhược điểm khác của phương pháp này là nó tải tệp vào bộ nhớ. Nếu tệp lớn, hãy ưu tiên

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
75. Nó hỗ trợ đệm và có thể, do đó tránh tiêu thụ bộ nhớ không kiểm soát

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
7

Làm thế nào để xóa một tập tin với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Bạn có thể xóa tệp hoặc liên kết tượng trưng bằng phương thức

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
01

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
8

Kể từ Python 3. 8, phương thức này nhận một đối số tên là

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
78. Theo mặc định,
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
78 được đặt thành
>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
40, có nghĩa là nó sẽ gây ra lỗi
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
17 nếu tệp không tồn tại

>>> from pathlib import Path

# pass all the parts to the constructor
>>> Path('.', 'projects', 'python', 'source')
PosixPath('projects/python/source')

# Using the / operator to join another path object
>>> Path('.', 'projects', 'python') / Path('source')
PosixPath('projects/python/source')

# Using the / operator to join another a string
>>> Path('.', 'projects', 'python') / 'source'
PosixPath('projects/python/source')

# Using the joinpath method
>>> Path('.', 'projects', 'python').joinpath('source')
PosixPath('projects/python/source')
9

Làm thế nào để xóa tất cả các tập tin trong một thư mục với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Để xóa tất cả các tệp trong một thư mục, chúng ta cần duyệt qua nó và kiểm tra xem đường dẫn có phải là tệp không và nếu có, hãy gọi

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
01 trên đó như chúng ta đã thấy trong phần trước

Để xem qua nội dung của một thư mục, chúng ta có thể sử dụng

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
63. Hãy xem xét thư mục sau

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
0

Phương pháp này chỉ xóa các tệp ngay lập tức trong thư mục hiện tại, vì vậy nó không đệ quy

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
1

Cách đổi tên tệp bằng cách sử dụng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 cũng đi kèm với một phương thức để đổi tên các tệp có tên là
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
87. Nó lấy một đường dẫn tệp đích và đổi tên nguồn thành đích. Kể từ Python 3. 8,
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
88 trả về phiên bản Đường dẫn mới

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
2

Chỉ đổi tên phần mở rộng tập tin

Nếu tất cả những gì bạn muốn là thay đổi phần mở rộng tệp thành một thứ khác, ví dụ: thay đổi từ

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
89 thành
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
90, bạn có thể sử dụng
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
87 kết hợp với phương thức
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
92, phương pháp này sẽ thực hiện như sau

  • nối thêm một hậu tố mới, nếu đường dẫn ban đầu không có
  • xóa hậu tố, nếu hậu tố được cung cấp là một chuỗi rỗng

Hãy xem một ví dụ nơi chúng tôi thay đổi tệp công thức của mình từ văn bản thuần túy

>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
89 thành dấu xuống
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
90

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
3

Làm cách nào để lấy thư mục mẹ của tệp có >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7

Đôi khi chúng tôi muốn lấy tên của thư mục mà tệp thuộc về. Bạn có thể nhận được điều đó thông qua một tài sản

>>> from pathlib import Path

>>> path = Path('/home/miguel/projects/blog/config.tar.gz')

>>> path.drive
'/'

>>> path.root
'/'

>>> path.anchor
'/'

>>> path.parent
PosixPath('/home/miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
02 tên là
>>> from pathlib import Path

>>> path = Path(r'C:/Users/Miguel/projects/blog/config.tar.gz')

>>> path.drive
'C:'

>>> path.root
'/'

>>> path.anchor
'C:/'

>>> path.parent
WindowsPath('C:/Users/Miguel/projects/blog')

>>> path.name
'config.tar.gz'

>>> path.stem
'config.tar'

>>> path.suffix
'.gz'

>>> path.suffixes
['.tar', '.gz']
97. Thuộc tính này đại diện cho cha logic của đường dẫn, có nghĩa là nó trả về cha của một tệp hoặc thư mục

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
4

Phần kết luận

Đó là rất nhiều điều để học, và tôi hy vọng bạn thích nó giống như tôi thích viết nó

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 đã là một phần của thư viện chuẩn kể từ Python 3. 4 và đó là một giải pháp tuyệt vời khi xử lý các đường dẫn

Trong hướng dẫn này, chúng tôi đã đề cập đến các trường hợp sử dụng quan trọng nhất trong đó

>>> Path('.', 'projects', 'python', 'source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / Path('source')
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python') / 'source'
WindowsPath('projects/python/source')

>>> Path('.', 'projects', 'python').joinpath('source')
WindowsPath('projects/python/source')
7 tỏa sáng qua vô số ví dụ

Làm cách nào để chuyển đổi chuỗi thành đường dẫn trong Python?

Sử dụng hàm tạo của lớp Đường dẫn để chuyển Chuỗi thành Đường dẫn trong Python . Bạn cần nhập lớp Đường dẫn từ pathlib. Chúng tôi đã sử dụng hàm tạo Path() để chuyển đổi Chuỗi thành Đường dẫn. Hàm tạo này chấp nhận một chuỗi chứa đường dẫn bắt buộc và chuyển đổi chuỗi thành đường dẫn POSIX hoặc đường dẫn Windows dựa trên hệ thống của bạn.

Làm cách nào để sử dụng Pathlib trong Python?

Pathlib hoạt động như thế nào? . py và đặt nó vào một thư mục cụ thể create a new Python file called example.py and put it inside a particular directory . Trong ví dụ này, chúng tôi nhập mô-đun Pathlib. Sau đó, chúng ta tạo một biến mới gọi là p để lưu trữ đường dẫn.

Đường dẫn hệ điều hành hay Pathlib nào tốt hơn?

Với Pathlib, bạn có thể thực hiện tất cả các tác vụ xử lý tệp cơ bản mà bạn đã làm trước đây và có một số tính năng khác không có trong mô-đun HĐH. Điểm khác biệt chính là Pathlib trực quan và dễ sử dụng hơn . Tất cả các phương thức xử lý tệp hữu ích đều thuộc về các đối tượng Đường dẫn.

Tại sao bạn nên sử dụng Pathlib?

Pathlib cho phép bạn dễ dàng lặp lại nội dung của thư mục đó, đồng thời nhận các tệp và thư mục khớp với một mẫu cụ thể . Hãy nhớ mô-đun toàn cầu mà bạn đã sử dụng để nhập cùng với mô-đun os để nhận các đường dẫn khớp với một mẫu?