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
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áchMô-đ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ơnVấ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ạnTrong 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']
>>> 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 428Trướ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ảngHơ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ứcGiải phẫu của một >>> from pathlib import Path
>>> Path.cwd[]
PosixPath['/home/miguel/Desktop/pathlib']
0
>>> from pathlib import Path
>>> Path.cwd[]
PosixPath['/home/miguel/Desktop/pathlib']
Để 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>>> 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']
>>> 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
08>>> 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']
- sử dụng toán tử
09>>> 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']
>>> 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
>>> 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']
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
>>> 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']
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
>>> 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']
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']
22Trong 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']
0Từ 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']
2Cá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
>>> from pathlib import Path
>>> Path.cwd[]
PosixPath['/home/miguel/Desktop/pathlib']
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']
3Mặ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']
4Ngược lại với
30 là gì?>>> 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']
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']
5Tạ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
>>> 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']
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']
36Phương thức này có ba đối số
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,>>> 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 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ó>>> 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']
>>> 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']
6Tạ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']
8Cá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']
9Cá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']
0Sử dụng >>> from pathlib import Path
>>> Path.cwd[]
PosixPath['/home/miguel/Desktop/pathlib']
5 để chỉ liệt kê các thư mục
>>> from pathlib import Path
>>> Path.cwd[]
PosixPath['/home/miguel/Desktop/pathlib']
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']
1Nhậ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']
2Như 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']
71Việ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']
3Cá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
>>> 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']
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']
5Cá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']
6Cá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']
7Chú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']
8Chú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']
9Cá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,
92 chỉ chấp nhận đường dẫn dưới dạng 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']
>>> 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']"
0Cá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
>>> 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']
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']"
1Nế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']"
2Bâ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
>>> 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']
Để 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
01>>> 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']
- 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']"
4Sau đó, 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']"
5Tô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àyTheo đề 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']"
6Là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ó
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']
- đọc và ghi tệp với
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']
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']"
7Chạ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 gianKhi 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']"
8Cá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']"
9Nế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']"
0Cá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']"
1Cá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']"
2Cá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
>>> 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']
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']"
3Mộ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']
28Thuộ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']"
4Cá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
>>> 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']
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']"
5Cá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
>>> 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']
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']"
6Tệ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
>>> 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']
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']"
7Cá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
>>> 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']
Đế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
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>>> 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']
- với phương pháp
44>>> 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']
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']"
8Và 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']"
9Cá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']
0Nế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']
1Cá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
>>> 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']
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ó,
56 sẽ ghi đè lên tệ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']
>>> 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']
2Cá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
>>> 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']
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']
3Cá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']
4Cá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']
>>> 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
67>>> 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']
- sử dụng các phương pháp
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>>> 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']
Đố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.
67 trước Python 3. 6 không thể xử lý các trường hợ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']
02. Trước tiên, bạn cần chuyển đổi đường dẫn 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']
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ờ
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[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 nếu tệp đã tồn tạ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']
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']
7Là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
>>> 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']
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']
8Kể 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']
9Là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
>>> 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']
Để 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']
0Phươ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']
1Cá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']
>>> 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']
2Chỉ đổ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']
3Là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
>>> 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']
Đô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']
4Phầ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ẫnTrong 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ụ