pathlib --- Đường dẫn hệ thống tập tin hướng đối tượng

Added in version 3.4.

Source code: Lib/pathlib/


Mô-đun này cung cấp các lớp biểu diễn đường dẫn hệ thống tệp với ngữ nghĩa thích hợp cho các hệ điều hành khác nhau. Các lớp đường dẫn được phân chia giữa pure paths, cung cấp các hoạt động tính toán thuần túy không có I/O và concrete paths, kế thừa từ các đường dẫn thuần túy nhưng cũng cung cấp các hoạt động I/O.

Sơ đồ kế thừa hiển thị các lớp có sẵn trong pathlib. các lớp cơ bản nhất là PurePath, có ba lớp con trực tiếp: PurePosixPath, PureWindowsPath và Đường dẫn. Ngoài bốn điều này các lớp, có hai lớp sử dụng đa kế thừa: Các lớp con PosixPath PurePosixPath và Path và WindowsPath các lớp con PureWindowsPath và Path.

Nếu bạn chưa từng sử dụng mô-đun này trước đây hoặc không chắc chắn lớp nào phù hợp với nhiệm vụ của mình thì Path rất có thể là thứ bạn cần. Nó khởi tạo một concrete path cho nền tảng mà mã đang chạy trên đó.

Đường dẫn thuần túy hữu ích trong một số trường hợp đặc biệt; ví dụ:

  1. Nếu bạn muốn thao tác với đường dẫn Windows trên máy Unix (hoặc ngược lại). Bạn không thể khởi tạo WindowsPath khi chạy trên Unix, nhưng bạn có thể khởi tạo PureWindowsPath.

  2. Bạn muốn đảm bảo rằng mã của bạn chỉ thao tác các đường dẫn mà không thực sự truy cập vào hệ điều hành. Trong trường hợp này, việc khởi tạo một trong các lớp thuần túy có thể hữu ích vì những lớp đó đơn giản là không có bất kỳ hoạt động truy cập hệ điều hành nào.

Xem thêm

PEP 428: Mô-đun pathlib - đường dẫn hệ thống tệp hướng đối tượng.

Xem thêm

Để thao tác đường dẫn cấp thấp trên chuỗi, bạn cũng có thể sử dụng mô-đun os.path.

Basic use

Nhập lớp chính:

>>> từ Đường dẫn nhập pathlib

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

>>> p = Đường dẫn('.')
>>> [x cho x trong p.iterdir() if x.is_dir()]
[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),
 PosixPath('__pycache__'), PosixPath('build')]

Liệt kê các tệp nguồn Python trong cây thư mục này:

>>> danh sách(p.glob('**/*.py'))
[PosixPath('test_pathlib.py'), PosixPath('setup.py'),
 PosixPath('pathlib.py'), PosixPath('docs/conf.py'),
 PosixPath('build/lib/pathlib.py')]

Điều hướng bên trong cây thư mục:

>>> p = Đường dẫn('/etc')
>>> q = p / 'init.d' / 'khởi động lại'
>>> q
PosixPath('/etc/init.d/reboot')
>>> q.resolve()
PosixPath('/etc/rc.d/init.d/halt')

Truy vấn thuộc tính đường dẫn:

>>> q.exists()
đúng
>>> q.is_dir()
sai

Mở một tập tin:

>>> với q.open()  f: f.readline()
...
'#!/bin/bash\n'

Ngoại lệ

exception pathlib.UnsupportedOperation

Một ngoại lệ kế thừa NotImplementedError được đưa ra khi một thao tác không được hỗ trợ được gọi trên đối tượng đường dẫn.

Added in version 3.13.

Đường dẫn thuần túy

Các đối tượng đường dẫn thuần túy cung cấp các hoạt động xử lý đường dẫn không thực sự truy cập vào hệ thống tệp. Có ba cách để truy cập các lớp này mà chúng tôi còn gọi là flavours:

class pathlib.PurePath(*pathsegments)

Một lớp chung đại diện cho hương vị đường dẫn của hệ thống (khởi tạo nó tạo ra PurePosixPath hoặc PureWindowsPath):

>>> PurePath('setup.py') # Running trên máy Unix
PurePosixPath('setup.py')

Mỗi phần tử của pathsegments có thể là một chuỗi biểu thị một đoạn đường dẫn hoặc một đối tượng triển khai giao diện os.PathLike trong đó phương thức __fspath__() trả về một chuỗi, chẳng hạn như một đối tượng đường dẫn khác:

>>> PurePath('foo', 'some/path', 'bar')
PurePosixPath('foo/some/path/bar')
>>> PurePath(Path('foo'), Path('bar'))
PurePosixPath('foo/bar')

Khi pathsegments trống, thư mục hiện tại được giả định:

>>> PurePath()
PurePosixPath('.')

Nếu một phân đoạn là đường dẫn tuyệt đối thì tất cả các phân đoạn trước đó sẽ bị bỏ qua (như os.path.join()):

>>> PurePath('/etc', '/usr', 'lib64')
PurePosixPath('/usr/lib64')
>>> PureWindowsPath('c:/Windows', 'd:bar')
PureWindowsPath('d:bar')

Trên Windows, ổ đĩa không được đặt lại khi gặp phải đoạn đường dẫn tương đối đã được root (ví dụ: r'\foo'):

>>> PureWindowsPath('c:/Windows', '/Program Files')
PureWindowsPath('c:/Program Files')

Các dấu gạch chéo giả và dấu chấm đơn được thu gọn, nhưng dấu gạch chéo kép ('..') và dấu gạch chéo kép ở đầu ('//') thì không, vì điều này sẽ thay đổi ý nghĩa của đường dẫn vì nhiều lý do (ví dụ: liên kết tượng trưng, đường dẫn UNC):

>>> PurePath('foo//bar')
PurePosixPath('foo/bar')
>>> PurePath('//foo/bar')
PurePosixPath('//foo/bar')
>>> PurePath('foo/./bar')
PurePosixPath('foo/bar')
>>> PurePath('foo/../bar')
PurePosixPath('foo/../bar')

(một cách tiếp cận ngây thơ sẽ làm cho PurePosixPath('foo/../bar') tương đương với PurePosixPath('bar'), điều này là sai nếu foo là một liên kết tượng trưng đến một thư mục khác)

Các đối tượng đường dẫn thuần túy triển khai giao diện os.PathLike, cho phép chúng được sử dụng ở bất kỳ nơi nào giao diện được chấp nhận.

Thay đổi trong phiên bản 3.6: Đã thêm hỗ trợ cho giao diện os.PathLike.

class pathlib.PurePosixPath(*pathsegments)

Một lớp con của PurePath, hương vị đường dẫn này đại diện cho các đường dẫn hệ thống tệp không phải của Windows:

>>> PurePosixPath('/etc/hosts')
PurePosixPath('/etc/hosts')

pathsegments được chỉ định tương tự như PurePath.

class pathlib.PureWindowsPath(*pathsegments)

Một lớp con của PurePath, hương vị đường dẫn này đại diện cho các đường dẫn hệ thống tệp Windows, bao gồm UNC paths:

>>> PureWindowsPath('c:/', 'Users', 'Ximénez')
PureWindowsPath('c:/Users/Ximénez')
>>> PureWindowsPath('//server/share/file')
PureWindowsPath('//server/share/file')

pathsegments được chỉ định tương tự như PurePath.

Bất kể bạn đang chạy trên hệ thống nào, bạn có thể khởi tạo tất cả các lớp này vì chúng không cung cấp bất kỳ thao tác nào thực hiện lệnh gọi hệ thống.

Thuộc tính chung

Đường dẫn là bất biến và hashable. Các đường dẫn có cùng hương vị có thể so sánh được và có thể sắp xếp được. Các thuộc tính này tôn trọng ngữ nghĩa phân loại của hương vị:

>>> PurePosixPath('foo') == PurePosixPath('FOO')
sai
>>> PureWindowsPath('foo') == PureWindowsPath('FOO')
đúng
>>> PureWindowsPath('FOO') trong { PureWindowsPath('foo') }
đúng
>>> PureWindowsPath('C:') < PureWindowsPath('d:')
đúng

Các đường dẫn có hương vị khác so sánh không bằng nhau và không thể sắp xếp được:

>>> PureWindowsPath('foo') == PurePosixPath('foo')
sai
>>> PureWindowsPath('foo') < PurePosixPath('foo')
Traceback (cuộc gọi gần đây nhất):
  Tệp "<stdin>", dòng 1, trong <module>
TypeError: '<' không được hỗ trợ giữa các phiên bản của 'PureWindowsPath' và 'PurePosixPath'

Toán tử

Toán tử gạch chéo giúp tạo các đường dẫn con, như os.path.join(). Nếu đối số là đường dẫn tuyệt đối thì đường dẫn trước đó sẽ bị bỏ qua. Trên Windows, ổ đĩa không được đặt lại khi đối số là đường dẫn tương đối gốc (ví dụ: r'\foo'):

>>> p = PurePath('/etc')
>>> p
PurePosixPath('/etc')
>>>p/'init.d'/'apache2'
PurePosixPath('/etc/init.d/apache2')
>>> q = PurePath('bin')
>>> '/usr'/q
PurePosixPath('/usr/bin')
>>> p / '/an_absolute_path'
PurePosixPath('/an_absolute_path')
>>> PureWindowsPath('c:/Windows', '/Program Files')
PureWindowsPath('c:/Program Files')

Một đối tượng đường dẫn có thể được sử dụng ở bất cứ nơi nào đối tượng triển khai os.PathLike được chấp nhận

>>> nhập hệ điều hành
>>> p = PurePath('/etc')
>>> os.fspath(p)
'/vv'

Biểu diễn chuỗi của một đường dẫn là chính đường dẫn hệ thống tệp thô (ở dạng gốc, ví dụ: có dấu gạch chéo ngược trong Windows), mà bạn có thể chuyển sang bất kỳ hàm nào lấy đường dẫn tệp dưới dạng chuỗi

>>> p = PurePath('/etc')
>>> str(p)
'/vv'
>>> p = PureWindowsPath('c:/Program Files')
>>> str(p)
'c:\\Tệp chương trình'

Tương tự, việc gọi bytes trên một đường dẫn sẽ cung cấp đường dẫn hệ thống tệp thô dưới dạng đối tượng byte, như được mã hóa bởi os.fsencode():

>>> byte(p)
b'/vv'

Ghi chú

Gọi bytes chỉ được khuyến nghị trong Unix. Trong Windows, dạng unicode là biểu diễn chuẩn của đường dẫn hệ thống tệp.

Truy cập các phần riêng lẻ

Để truy cập vào các "bộ phận" (thành phần) riêng lẻ của đường dẫn, hãy sử dụng thuộc tính sau:

PurePath.parts

Một bộ dữ liệu cho phép truy cập vào các thành phần khác nhau của đường dẫn:

>>> p = PurePath('/usr/bin/python3')
>>> p.phần
('/', 'usr', 'bin', 'python3')

>>> p = PureWindowsPath('c:/Program Files/PSF')
>>> p.phần
('c:\\', 'Tệp chương trình', 'PSF')

(lưu ý cách ổ đĩa và thư mục gốc cục bộ được nhóm lại thành một phần)

Phương thức và thuộc tính

Đường dẫn thuần túy cung cấp các phương thức và thuộc tính sau:

PurePath.parser

Việc triển khai mô-đun os.path được sử dụng để phân tích và nối đường dẫn cấp thấp: posixpath hoặc ntpath.

Added in version 3.13.

PurePath.drive

Một chuỗi đại diện cho ký tự hoặc tên ổ đĩa, nếu có:

>>> PureWindowsPath('c:/Program Files/').drive
'c:'
>>> PureWindowsPath('/Program Files/').drive
''
>>> PurePosixPath('/etc').drive
''

Chia sẻ UNC cũng được coi là động lực:

>>> PureWindowsPath('//host/share/foo.txt').drive
'\\\\host\\share'
PurePath.root

Một chuỗi đại diện cho gốc (cục bộ hoặc toàn cục), nếu có:

>>> PureWindowsPath('c:/Program Files/').root
'\\'
>>> PureWindowsPath('c:Program Files/').root
''
>>> PurePosixPath('/etc').root
'/'

UNC chia sẻ luôn có gốc:

>>> PureWindowsPath('//host/share').root
'\\'

Nếu đường dẫn bắt đầu bằng nhiều hơn hai dấu gạch chéo liên tiếp, PurePosixPath sẽ thu gọn chúng:

>>> PurePosixPath('//etc').root
'//'
>>> PurePosixPath('///etc').root
'/'
>>> PurePosixPath('////etc').root
'/'

Ghi chú

Hành vi này tuân theo The Open Group Base Specifications Issue 6, đoạn 4.11 Pathname Resolution:

"A pathname that begins with two successive slashes may be interpreted in an implementation-defined manner, although more than two leading slashes shall be treated as a single slash."

PurePath.anchor

Sự kết hợp của ổ đĩa và root:

>>> PureWindowsPath('c:/Program Files/').anchor
'c:\\'
>>> PureWindowsPath('c:Program Files/').anchor
'c:'
>>> PurePosixPath('/etc').anchor
'/'
>>> PureWindowsPath('//host/share').anchor
'\\\\host\\share\\'
PurePath.parents

Một chuỗi bất biến cung cấp quyền truy cập vào tổ tiên logic của đường dẫn:

>>> p = PureWindowsPath('c:/foo/bar/setup.py')
>>> p.parents[0]
PureWindowsPath('c:/foo/bar')
>>> p.parents[1]
PureWindowsPath('c:/foo')
>>> p.parents[2]
PureWindowsPath('c:/')

Thay đổi trong phiên bản 3.10: Trình tự gốc hiện hỗ trợ slices và các giá trị chỉ số âm.

PurePath.parent

Cha mẹ logic của đường dẫn:

>>> p = PurePosixPath('/a/b/c/d')
>>> p.parent
PurePosixPath('/a/b/c')

Bạn không thể đi qua một điểm neo hoặc đường dẫn trống:

>>> p = PurePosixPath('/')
>>> p.parent
PurePosixPath('/')
>>> p = PurePosixPath('.')
>>> p.parent
PurePosixPath('.')

Ghi chú

Đây là một hoạt động từ vựng thuần túy, do đó có hành vi sau:

>>> p = PurePosixPath('foo/..')
>>> p.parent
PurePosixPath('foo')

Nếu bạn muốn đi theo đường dẫn hệ thống tệp tùy ý lên trên, trước tiên bạn nên gọi Path.resolve() để giải quyết các liên kết tượng trưng và loại bỏ các thành phần "..".

PurePath.name

Một chuỗi đại diện cho thành phần đường dẫn cuối cùng, ngoại trừ ổ đĩa và root, nếu có:

>>> PurePosixPath('my/library/setup.py').name
'setup.py'

Tên ổ đĩa UNC không được xem xét:

>>> PureWindowsPath('//some/share/setup.py').name
'setup.py'
>>> PureWindowsPath('//some/share').name
''
PurePath.suffix

Phần được phân tách bằng dấu chấm cuối cùng của thành phần cuối cùng, nếu có:

>>> PurePosixPath('my/library/setup.py').suffix
'.py'
>>> PurePosixPath('my/library.tar.gz').suffix
'.gz'
>>> PurePosixPath('my/library').suffix
''

Đây thường được gọi là phần mở rộng tập tin.

Thay đổi trong phiên bản 3.14: Một dấu chấm (".") được coi là hậu tố hợp lệ.

PurePath.suffixes

Danh sách các hậu tố của đường dẫn, thường được gọi là phần mở rộng tệp:

>>> PurePosixPath('my/library.tar.gar').suffixes
['.tar', '.gar']
>>> PurePosixPath('my/library.tar.gz').suffixes
['.tar', '.gz']
>>> PurePosixPath('my/library').suffixes
[]

Thay đổi trong phiên bản 3.14: Một dấu chấm (".") được coi là hậu tố hợp lệ.

PurePath.stem

Thành phần đường dẫn cuối cùng, không có hậu tố của nó:

>>> PurePosixPath('my/library.tar.gz').stem
'thư viện.tar'
>>> PurePosixPath('my/library.tar').stem
'thư viện'
>>> PurePosixPath('my/library').stem
'thư viện'

Thay đổi trong phiên bản 3.14: Một dấu chấm (".") được coi là hậu tố hợp lệ.

PurePath.as_posix()

Trả về biểu diễn chuỗi của đường dẫn có dấu gạch chéo lên (/):

>>> p = PureWindowsPath('c:\\windows')
>>> str(p)
'c:\\windows'
>>> p.as_posix()
'c:/windows'
PurePath.is_absolute()

Trả về đường dẫn có tuyệt đối hay không. Một đường dẫn được coi là tuyệt đối nếu nó có cả gốc và (nếu hương vị cho phép) ổ đĩa

>>> PurePosixPath('/a/b').is_absolute()
đúng
>>> PurePosixPath('a/b').is_absolute()
sai

>>> PureWindowsPath('c:/a/b').is_absolute()
đúng
>>> PureWindowsPath('/a/b').is_absolute()
sai
>>> PureWindowsPath('c:').is_absolute()
sai
>>> PureWindowsPath('//some/share').is_absolute()
đúng
PurePath.is_relative_to(other)

Trả về xem đường dẫn này có liên quan đến đường dẫn other hay không.

>>> p = PurePath('/etc/passwd')
>>> p.is_relative_to('/etc')
True
>>> p.is_relative_to('/usr')
False

Phương pháp này dựa trên chuỗi; nó không truy cập vào hệ thống tập tin cũng như không xử lý các phân đoạn ".." một cách đặc biệt. Đoạn mã sau là tương đương:

>>> u = PurePath('/usr')
>>> u == p or u in p.parents
False

Added in version 3.9.

Không được dùng nữa kể từ phiên bản 3.12, đã bị xóa trong phiên bản 3.14: Việc chuyển các đối số bổ sung không được dùng nữa; nếu được cung cấp, chúng sẽ được nối với other.

PurePath.is_reserved()

Với PureWindowsPath, trả về True nếu đường dẫn được coi là dành riêng trong Windows, False nếu không. Với PurePosixPath, False luôn được trả về.

Thay đổi trong phiên bản 3.13: Tên đường dẫn Windows chứa dấu hai chấm hoặc kết thúc bằng dấu chấm hoặc dấu cách được coi là dành riêng. Đường dẫn UNC có thể được bảo lưu.

Không được dùng nữa kể từ phiên bản 3.13, sẽ bị xóa trong phiên bản 3.15: Phương pháp này không được dùng nữa; sử dụng os.path.isreserved() để phát hiện các đường dẫn dành riêng trên Windows.

PurePath.joinpath(*pathsegments)

Gọi phương thức này tương đương với việc kết hợp đường dẫn với từng pathsegments đã cho lần lượt

>>> PurePosixPath('/etc').joinpath('passwd')
PurePosixPath('/etc/passwd')
>>> PurePosixPath('/etc').joinpath(PurePosixPath('passwd'))
PurePosixPath('/etc/passwd')
>>> PurePosixPath('/etc').joinpath('init.d', 'apache2')
PurePosixPath('/etc/init.d/apache2')
>>> PureWindowsPath('c:').joinpath('/Program Files')
PureWindowsPath('c:/Program Files')
PurePath.full_match(pattern, *, case_sensitive=None)

Khớp đường dẫn này với mẫu kiểu toàn cầu được cung cấp. Trả về True nếu khớp thành công, nếu không thì trả về False. Ví dụ:

>>> PurePath('a/b.py').full_match('a/*.py')
đúng
>>> PurePath('a/b.py').full_match('*.py')
sai
>>> PurePath('/a/b/c.py').full_match('/a/**')
đúng
>>> PurePath('/a/b/c.py').full_match('**/*.py')
đúng

Xem thêm

tài liệu Ngôn ngữ mẫu.

Cũng như các phương pháp khác, phân biệt chữ hoa chữ thường tuân theo các giá trị mặc định của nền tảng:

>>> PurePosixPath('b.py').full_match('*.PY')
sai
>>> PureWindowsPath('b.py').full_match('*.PY')
đúng

Đặt case_sensitive thành True hoặc False để ghi đè hành vi này.

Added in version 3.13.

PurePath.match(pattern, *, case_sensitive=None)

So khớp đường dẫn này với mẫu kiểu toàn cầu không đệ quy được cung cấp. Trả về True nếu khớp thành công, nếu không thì trả về False.

Phương thức này tương tự như full_match(), nhưng không cho phép các mẫu trống (ValueError được nâng lên), ký tự đại diện đệ quy "**" không được hỗ trợ (nó hoạt động giống như "*" không đệ quy) và nếu một mẫu tương đối được cung cấp thì việc so khớp sẽ được thực hiện từ bên phải:

>>> PurePath('a/b.py').match('*.py')
đúng
>>> PurePath('/a/b/c.py').match('b/*.py')
đúng
>>> PurePath('/a/b/c.py').match('a/*.py')
sai

Thay đổi trong phiên bản 3.12: Tham số pattern chấp nhận path-like object.

Thay đổi trong phiên bản 3.12: Tham số case_sensitive đã được thêm vào.

PurePath.relative_to(other, walk_up=False)

Tính toán phiên bản của đường dẫn này tương ứng với đường dẫn được biểu thị bằng other. Nếu không thể, ValueError sẽ được nêu ra:

>>> p = PurePosixPath('/etc/passwd')
>>> p.relative_to('/')
PurePosixPath('etc/passwd')
>>> p.relative_to('/etc')
PurePosixPath('passwd')
>>> p.relative_to('/usr')
Traceback (cuộc gọi gần đây nhất):
  Tệp "<stdin>", dòng 1, trong <module>
  Tệp "pathlib.py", dòng 941, ở dạngrel_to
    raise ValueError(error_message.format(str(self), str(formatted)))
ValueError: '/etc/passwd' không nằm trong đường dẫn phụ của '/usr' HOẶC một đường dẫn là tương đối và đường dẫn kia là tuyệt đối.

Khi walk_up sai (mặc định), đường dẫn phải bắt đầu bằng other. Khi đối số là đúng, các mục .. có thể được thêm vào để tạo thành đường dẫn tương đối. Trong tất cả các trường hợp khác, chẳng hạn như đường dẫn tham chiếu đến các ổ đĩa khác nhau, ValueError được nâng lên.:

>>> p.relative_to('/usr', walk_up=True)
PurePosixPath('../etc/passwd')
>>> p.relative_to('foo', walk_up=True)
Traceback (cuộc gọi gần đây nhất):
  Tệp "<stdin>", dòng 1, trong <module>
  Tệp "pathlib.py", dòng 941, ở dạngrel_to
    raise ValueError(error_message.format(str(self), str(formatted)))
ValueError: '/etc/passwd' không nằm trên cùng ổ đĩa với 'foo' HOẶC một đường dẫn là tương đối và đường dẫn kia là tuyệt đối.

Cảnh báo

Hàm này là một phần của PurePath và hoạt động với chuỗi. Nó không kiểm tra hoặc truy cập cấu trúc tập tin cơ bản. Điều này có thể ảnh hưởng đến tùy chọn walk_up vì nó giả định rằng không có liên kết tượng trưng nào trong đường dẫn; hãy gọi resolve() trước nếu cần để giải quyết các liên kết tượng trưng.

Thay đổi trong phiên bản 3.12: Tham số walk_up đã được thêm vào (hành vi cũ giống như walk_up=False).

Không được dùng nữa kể từ phiên bản 3.12, đã bị xóa trong phiên bản 3.14: Việc truyền các đối số vị trí bổ sung không được dùng nữa; nếu được cung cấp, chúng sẽ được nối với other.

PurePath.with_name(name)

Trả lại đường dẫn mới với name đã thay đổi. Nếu đường dẫn ban đầu không có tên, ValueError sẽ được nâng lên:

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_name('setup.py')
PureWindowsPath('c:/Downloads/setup.py')
>>> p = PureWindowsPath('c:/')
>>> p.with_name('setup.py')
Traceback (cuộc gọi gần đây nhất):
  Tệp "<stdin>", dòng 1, trong <module>
  Tệp "/home/antoine/cpython/default/Lib/pathlib.py", dòng 751, trong with_name
    raise ValueError("%r có tên trống" % (self,))
ValueError: PureWindowsPath('c:/') có tên trống
PurePath.with_stem(stem)

Trả lại đường dẫn mới với stem đã thay đổi. Nếu đường dẫn ban đầu không có tên, ValueError sẽ được nâng lên:

>>> p = PureWindowsPath('c:/Downloads/draft.txt')
>>> p.with_stem('cuối cùng')
PureWindowsPath('c:/Downloads/final.txt')
>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_stem('lib')
PureWindowsPath('c:/Downloads/lib.gz')
>>> p = PureWindowsPath('c:/')
>>> p.with_stem('')
Traceback (cuộc gọi gần đây nhất):
  Tệp "<stdin>", dòng 1, trong <module>
  Tệp "/home/antoine/cpython/default/Lib/pathlib.py", dòng 861, trong with_stem
    trả về self.with_name(stem + self.suffix)
  Tệp "/home/antoine/cpython/default/Lib/pathlib.py", dòng 851, trong with_name
    raise ValueError("%r có tên trống" % (self,))
ValueError: PureWindowsPath('c:/') có tên trống

Added in version 3.9.

PurePath.with_suffix(suffix)

Trả lại đường dẫn mới với suffix đã thay đổi. Nếu đường dẫn ban đầu không có hậu tố thì thay vào đó, suffix mới sẽ được thêm vào. Nếu suffix là một chuỗi trống, hậu tố gốc sẽ bị xóa

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_suffix('.bz2')
PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
>>> p = PureWindowsPath('README')
>>> p.with_suffix('.txt')
PureWindowsPath('README.txt')
>>> p = PureWindowsPath('README.txt')
>>> p.with_suffix('')
PureWindowsPath('README')

Thay đổi trong phiên bản 3.14: Một dấu chấm (".") được coi là hậu tố hợp lệ. Trong các phiên bản trước, ValueError sẽ được nâng lên nếu có một dấu chấm duy nhất.

PurePath.with_segments(*pathsegments)

Tạo một đối tượng đường dẫn mới cùng loại bằng cách kết hợp pathsegments đã cho. Phương thức này được gọi bất cứ khi nào một đường dẫn phái sinh được tạo, chẳng hạn như từ parentrelative_to(). Các lớp con có thể ghi đè phương thức này để truyền thông tin đến các đường dẫn phái sinh, ví dụ:

từ pathlib nhập PurePosixPath

lớp MyPath(PurePosixPath):
    def __init__(self, *pathsegments, session_id):
        super().__init__(*đoạn đường dẫn)
        self.session_id = session_id

    def with_segments(self, *pathsegments):
        kiểu trả về(self)(*đường dẫn, session_id=self.session_id)

vv = MyPath('/etc', session_id=42)
máy chủ = vv / 'máy chủ'
print(hosts.session_id) # 42

Added in version 3.12.

Đường dẫn bê tông

Các đường dẫn cụ thể là các lớp con của các lớp đường dẫn thuần túy. Ngoài các hoạt động do cái sau cung cấp, chúng còn cung cấp các phương thức để thực hiện lệnh gọi hệ thống trên các đối tượng đường dẫn. Có ba cách để khởi tạo đường dẫn cụ thể:

class pathlib.Path(*pathsegments)

Một lớp con của PurePath, lớp này đại diện cho các đường dẫn cụ thể về loại đường dẫn của hệ thống (khởi tạo nó tạo ra PosixPath hoặc WindowsPath):

>>> Đường dẫn('setup.py')
PosixPath('setup.py')

pathsegments được chỉ định tương tự như PurePath.

class pathlib.PosixPath(*pathsegments)

Một lớp con của PathPurePosixPath, lớp này đại diện cho các đường dẫn cụ thể của hệ thống tệp không phải Windows

>>> PosixPath('/etc/hosts')
PosixPath('/etc/hosts')

pathsegments được chỉ định tương tự như PurePath.

Thay đổi trong phiên bản 3.13: Tăng UnsupportedOperation trên Windows. Trong các phiên bản trước, NotImplementedError đã được nâng lên thay thế.

class pathlib.WindowsPath(*pathsegments)

Một lớp con của PathPureWindowsPath, lớp này đại diện cho các đường dẫn hệ thống tệp Windows cụ thể:

>>> WindowsPath('c:/', 'Người dùng', 'Ximénez')
WindowsPath('c:/Users/Ximénez')

pathsegments được chỉ định tương tự như PurePath.

Thay đổi trong phiên bản 3.13: Tăng UnsupportedOperation trên nền tảng không phải Windows. Trong các phiên bản trước, NotImplementedError đã được nâng lên thay thế.

Bạn chỉ có thể khởi tạo phiên bản lớp tương ứng với hệ thống của mình (cho phép lệnh gọi hệ thống trên các phiên bản đường dẫn không tương thích có thể dẫn đến lỗi hoặc lỗi trong ứng dụng của bạn):

>>> nhập hệ điều hành
>>> os.name
'tích cực'
>>> Đường dẫn('setup.py')
PosixPath('setup.py')
>>> PosixPath('setup.py')
PosixPath('setup.py')
>>> WindowsPath('setup.py')
Traceback (cuộc gọi gần đây nhất):
  Tệp "<stdin>", dòng 1, trong <module>
  Tệp "pathlib.py", dòng 798, trong __new__
    % (cls.__name__,))
UnsupportedOperation: không thể khởi tạo 'WindowsPath' trên hệ thống của bạn

Một số phương thức đường dẫn cụ thể có thể tăng OSError nếu lệnh gọi hệ thống không thành công (ví dụ: vì đường dẫn không tồn tại).

Phân tích cú pháp và tạo URI

Các đối tượng đường dẫn cụ thể có thể được tạo từ và được biểu diễn dưới dạng URI 'tệp' tuân theo RFC 8089.

Ghi chú

URI tệp không thể di chuyển được trên các máy có filesystem encodings khác nhau.

classmethod Path.from_uri(uri)

Trả về một đối tượng đường dẫn mới từ việc phân tích cú pháp 'tệp' URI. Ví dụ:

>>> p = Path.from_uri('file:///etc/hosts')
PosixPath('/etc/hosts')

Trên Windows, thiết bị DOS và đường dẫn UNC có thể được phân tích cú pháp từ URI:

>>> p = Path.from_uri('file:///c:/windows')
WindowsPath('c:/windows')
>>> p = Path.from_uri('file://server/share')
WindowsPath('//server/share')

Một số dạng biến thể được hỗ trợ:

>>> p = Path.from_uri('file:////server/share')
WindowsPath('//server/share')
>>> p = Path.from_uri('file://///server/share')
WindowsPath('//server/share')
>>> p = Path.from_uri('file:c:/windows')
WindowsPath('c:/windows')
>>> p = Path.from_uri('file:/c|/windows')
WindowsPath('c:/windows')

ValueError được nâng lên nếu URI không bắt đầu bằng file: hoặc đường dẫn được phân tích cú pháp không tuyệt đối.

Added in version 3.13.

Thay đổi trong phiên bản 3.14: Quyền URL sẽ bị loại bỏ nếu nó khớp với tên máy chủ cục bộ. Ngược lại, nếu quyền không trống hoặc localhost thì trên Windows, đường dẫn UNC sẽ được trả về (như trước) và trên các nền tảng khác, ValueError sẽ được nâng lên.

Path.as_uri()

Biểu thị đường dẫn dưới dạng 'tệp' URI. ValueError được nâng lên nếu đường dẫn không tuyệt đối.

>>> p = PosixPath('/etc/passwd')
>>> p.as_uri()
'tập tin:///etc/passwd'
>>> p = WindowsPath('c:/Windows')
>>> p.as_uri()
'tệp:///c:/Windows'

Không được dùng nữa kể từ phiên bản 3.14, sẽ bị xóa trong phiên bản 3.19: Có thể gọi phương thức này từ PurePath thay vì Path nhưng không được dùng nữa. Việc sử dụng os.fsencode() của phương pháp này khiến nó hoàn toàn không tinh khiết.

Mở rộng và giải quyết đường dẫn

classmethod Path.home()

Trả về một đối tượng đường dẫn mới đại diện cho thư mục chính của người dùng (được trả về bởi os.path.expanduser() với cấu trúc ~). Nếu thư mục chính không thể giải quyết được, RuntimeError sẽ được nâng lên.

>>> Đường dẫn.home()
PosixPath('/home/antoine')

Added in version 3.5.

Path.expanduser()

Trả về một đường dẫn mới với các cấu trúc ~~user mở rộng, được trả về bởi os.path.expanduser(). Nếu không thể giải quyết được thư mục chính, RuntimeError sẽ được nâng lên.

>>> p = PosixPath('~/films/Monty Python')
>>> p.expanduser()
PosixPath('/home/eric/films/Monty Python')

Added in version 3.5.

classmethod Path.cwd()

Trả về một đối tượng đường dẫn mới đại diện cho thư mục hiện tại (được trả về bởi os.getcwd()):

>>> Đường dẫn.cwd()
PosixPath('/home/antoine/pathlib')
Path.absolute()

Làm cho đường dẫn trở nên tuyệt đối, không cần chuẩn hóa hoặc giải quyết các liên kết tượng trưng. Trả về một đối tượng đường dẫn mới:

>>> p = Đường dẫn('kiểm tra')
>>> p
PosixPath('kiểm tra')
>>> p.absolute()
PosixPath('/home/antoine/pathlib/tests')
Path.resolve(strict=False)

Tạo đường dẫn tuyệt đối, giải quyết mọi liên kết tượng trưng. Một đối tượng đường dẫn mới được trả về:

>>> p = Đường dẫn()
>>> p
PosixPath('.')
>>> p.resolve()
PosixPath('/home/antoine/pathlib')

Các thành phần ".." cũng bị loại bỏ (đây là phương pháp duy nhất để làm như vậy):

>>> p = Đường dẫn('docs/../setup.py')
>>> p.resolve()
PosixPath('/home/antoine/pathlib/setup.py')

Nếu đường dẫn không tồn tại hoặc gặp phải vòng lặp liên kết tượng trưng và strictTrue, OSError sẽ được nâng lên. Nếu strictFalse, đường dẫn sẽ được giải quyết ở mức tối đa có thể và mọi phần còn lại sẽ được thêm vào mà không cần kiểm tra xem nó có tồn tại hay không.

Thay đổi trong phiên bản 3.6: Tham số strict đã được thêm vào (hành vi trước 3.6 là nghiêm ngặt).

Thay đổi trong phiên bản 3.13: Vòng lặp liên kết tượng trưng được xử lý giống như các lỗi khác: OSError được nâng lên ở chế độ nghiêm ngặt và không có ngoại lệ nào được đưa ra ở chế độ không nghiêm ngặt. Trong các phiên bản trước, RuntimeError được tăng lên bất kể giá trị của strict.

Trả về đường dẫn mà các điểm liên kết tượng trưng (được trả về bởi os.readlink()):

>>> p = Đường dẫn('mylink')
>>> p.symlink_to('setup.py')
>>> p.readlink()
PosixPath('setup.py')

Added in version 3.9.

Thay đổi trong phiên bản 3.13: Tăng UnsupportedOperation nếu os.readlink() không có sẵn. Trong các phiên bản trước, NotImplementedError đã được nâng lên.

Truy vấn loại và trạng thái tệp

Thay đổi trong phiên bản 3.8: exists(), is_dir(), is_file(), is_mount(), is_symlink(), is_block_device(), is_char_device(), is_fifo(), is_socket() hiện trả về False thay vì đưa ra ngoại lệ cho các đường dẫn chứa các ký tự không thể biểu thị ở cấp độ hệ điều hành.

Thay đổi trong phiên bản 3.14: Các phương thức nêu trên hiện trả về False thay vì đưa ra bất kỳ ngoại lệ OSError nào từ hệ điều hành. Trong các phiên bản trước, một số loại ngoại lệ OSError được nâng lên và một số khác bị loại bỏ. Hành vi mới nhất quán với os.path.exists(), os.path.isdir(), v.v. Sử dụng stat() để truy xuất trạng thái tệp mà không loại bỏ các ngoại lệ.

Path.stat(*, follow_symlinks=True)

Trả về một đối tượng os.stat_result chứa thông tin về đường dẫn này, như os.stat(). Kết quả được tra cứu ở mỗi lần gọi phương thức này.

Phương pháp này thường theo các liên kết tượng trưng; để chỉ định một liên kết tượng trưng, ​​hãy thêm đối số follow_symlinks=False hoặc sử dụng lstat().

>>> p = Đường dẫn('setup.py')
>>> p.stat().st_size
956
>>> p.stat().st_mtime
1327883547.852554

Thay đổi trong phiên bản 3.10: Tham số follow_symlinks đã được thêm vào.

Path.lstat()

Giống như Path.stat() nhưng, nếu đường dẫn trỏ đến một liên kết tượng trưng, ​​hãy trả về thông tin của liên kết tượng trưng thay vì mục tiêu của nó.

Path.exists(*, follow_symlinks=True)

Trả về True nếu đường dẫn trỏ đến một tệp hoặc thư mục hiện có. False sẽ được trả về nếu đường dẫn không hợp lệ, không thể truy cập hoặc bị thiếu. Sử dụng Path.stat() để phân biệt các trường hợp này.

Phương pháp này thường theo các liên kết tượng trưng; để kiểm tra xem liên kết tượng trưng có tồn tại hay không, hãy thêm đối số follow_symlinks=False.

>>> Đường dẫn('.').exists()
đúng
>>> Đường dẫn('setup.py').exists()
đúng
>>> Đường dẫn('/etc').exists()
đúng
>>> Đường dẫn('không tồn tại tệp').exists()
sai

Thay đổi trong phiên bản 3.12: Tham số follow_symlinks đã được thêm vào.

Path.is_file(*, follow_symlinks=True)

Trả về True nếu đường dẫn trỏ đến một tệp thông thường. False sẽ được trả về nếu đường dẫn không hợp lệ, không thể truy cập hoặc bị thiếu hoặc nếu nó trỏ đến thứ gì đó không phải là tệp thông thường. Sử dụng Path.stat() để phân biệt các trường hợp này.

Phương pháp này thường theo các liên kết tượng trưng; để loại trừ các liên kết tượng trưng, ​​hãy thêm đối số follow_symlinks=False.

Thay đổi trong phiên bản 3.13: Tham số follow_symlinks đã được thêm vào.

Path.is_dir(*, follow_symlinks=True)

Trả về True nếu đường dẫn trỏ đến một thư mục. False sẽ được trả về nếu đường dẫn không hợp lệ, không thể truy cập hoặc bị thiếu hoặc nếu nó trỏ đến một thứ khác ngoài một thư mục. Sử dụng Path.stat() để phân biệt các trường hợp này.

Phương pháp này thường theo các liên kết tượng trưng; để loại trừ các liên kết tượng trưng đến các thư mục, hãy thêm đối số follow_symlinks=False.

Thay đổi trong phiên bản 3.13: Tham số follow_symlinks đã được thêm vào.

Trả về True nếu đường dẫn trỏ đến một liên kết tượng trưng, ​​ngay cả khi liên kết tượng trưng đó bị hỏng. False sẽ được trả về nếu đường dẫn không hợp lệ, không thể truy cập hoặc bị thiếu hoặc nếu nó trỏ đến thứ gì đó không phải là liên kết tượng trưng. Sử dụng Path.stat() để phân biệt các trường hợp này.

Path.is_junction()

Trả về True nếu đường dẫn trỏ đến một điểm nối và False cho bất kỳ loại tệp nào khác. Hiện tại chỉ có Windows hỗ trợ các nút giao thông.

Added in version 3.12.

Path.is_mount()

Trả về True nếu đường dẫn là mount point: một điểm trong hệ thống tệp nơi hệ thống tệp khác đã được gắn kết. Trên POSIX, hàm này sẽ kiểm tra xem cha mẹ của path, path/.., có ở trên một thiết bị khác với path hay không, hoặc liệu path/..path có trỏ đến cùng một nút i trên cùng một thiết bị hay không --- điều này sẽ phát hiện các điểm gắn kết cho tất cả các biến thể Unix và POSIX. Trên Windows, điểm gắn kết được coi là gốc ký tự ổ đĩa (ví dụ: c:\), chia sẻ UNC (ví dụ: \\server\share) hoặc thư mục hệ thống tệp được gắn.

Added in version 3.7.

Thay đổi trong phiên bản 3.12: Hỗ trợ Windows đã được thêm vào.

Path.is_socket()

Trả về True nếu đường dẫn trỏ đến ổ cắm Unix. False sẽ được trả về nếu đường dẫn không hợp lệ, không thể truy cập hoặc bị thiếu hoặc nếu nó trỏ đến thứ gì đó không phải là ổ cắm Unix. Sử dụng Path.stat() để phân biệt các trường hợp này.

Path.is_fifo()

Trả về True nếu đường dẫn trỏ đến FIFO. False sẽ được trả về nếu đường dẫn không hợp lệ, không thể truy cập hoặc bị thiếu hoặc nếu nó trỏ đến thứ gì đó không phải là FIFO. Sử dụng Path.stat() để phân biệt các trường hợp này.

Path.is_block_device()

Trả về True nếu đường dẫn trỏ tới một thiết bị khối. False sẽ được trả về nếu đường dẫn không hợp lệ, không thể truy cập hoặc bị thiếu hoặc nếu nó trỏ đến một thứ khác ngoài thiết bị khối. Sử dụng Path.stat() để phân biệt các trường hợp này.

Path.is_char_device()

Trả về True nếu đường dẫn trỏ tới một thiết bị ký tự. False sẽ được trả về nếu đường dẫn không hợp lệ, không thể truy cập hoặc bị thiếu hoặc nếu nó trỏ đến một thứ khác ngoài thiết bị ký tự. Sử dụng Path.stat() để phân biệt các trường hợp này.

Path.samefile(other_path)

Trả về xem đường dẫn này có trỏ đến cùng một tệp với other_path hay không, tệp này có thể là đối tượng Đường dẫn hoặc một chuỗi. Ngữ nghĩa tương tự như os.path.samefile()os.path.samestat().

Một OSError có thể được nâng lên nếu một trong hai tệp không thể truy cập được vì lý do nào đó.

>>> p = Đường dẫn('thư rác')
>>> q = Đường dẫn('trứng')
>>> p.samefile(q)
sai
>>> p.samefile('spam')
đúng

Added in version 3.5.

Path.info

Đối tượng PathInfo hỗ trợ truy vấn thông tin loại tệp. Đối tượng hiển thị các phương thức lưu trữ kết quả của chúng vào bộ đệm, điều này có thể giúp giảm số lượng lệnh gọi hệ thống cần thiết khi bật loại tệp. Ví dụ:

>>> p = Đường dẫn('src')
>>> nếu p.info.is_symlink():
... print('symlink')
... elif p.info.is_dir():
... in('thư mục')
... Elif p.info.exists():
... print('cái gì khác')
... khác:
... in('không tìm thấy')
...
thư mục

Nếu đường dẫn được tạo từ Path.iterdir() thì thuộc tính này sẽ được khởi tạo cùng với một số thông tin về loại tệp thu được từ quá trình quét thư mục mẹ. Chỉ truy cập Path.info không thực hiện bất kỳ truy vấn hệ thống tệp nào.

Để tìm nạp thông tin cập nhật, tốt nhất nên gọi Path.is_dir(), is_file()is_symlink() thay vì gọi các phương thức của thuộc tính này. Không có cách nào để thiết lập lại bộ đệm; thay vào đó, bạn có thể tạo một đối tượng đường dẫn mới với bộ đệm thông tin trống thông qua p = Path(p).

Added in version 3.14.

Đọc và ghi tập tin

Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)

Mở tệp được trỏ đến bởi đường dẫn, giống như hàm open() tích hợp sẵn:

>>> p = Đường dẫn('setup.py')
>>> với p.open()  f:
... f.readline()
...
'#!/usr/bin/env python3\n'
Path.read_text(encoding=None, errors=None, newline=None)

Trả về nội dung đã giải mã của tệp được trỏ tới dưới dạng chuỗi

>>> p = Đường dẫn('my_text_file')
>>> p.write_text('Nội dung file văn bản')
18
>>> p.read_text()
'Nội dung tập tin văn bản'

Tập tin được mở và sau đó đóng lại. Các tham số tùy chọn có ý nghĩa tương tự như trong open().

Added in version 3.5.

Thay đổi trong phiên bản 3.13: Tham số newline đã được thêm vào.

Path.read_bytes()

Trả về nội dung nhị phân của tệp được trỏ tới dưới dạng đối tượng byte

>>> p = Đường dẫn('my_binary_file')
>>> p.write_bytes(b'Nội dung tệp nhị phân')
20
>>> p.read_bytes()
b'Nội dung tập tin nhị phân'

Added in version 3.5.

Path.write_text(data, encoding=None, errors=None, newline=None)

Mở tệp được trỏ đến ở chế độ văn bản, viết data vào đó và đóng tệp

>>> p = Đường dẫn('my_text_file')
>>> p.write_text('Nội dung file văn bản')
18
>>> p.read_text()
'Nội dung tập tin văn bản'

Một tập tin hiện có cùng tên bị ghi đè. Các tham số tùy chọn có ý nghĩa tương tự như trong open().

Added in version 3.5.

Thay đổi trong phiên bản 3.10: Tham số newline đã được thêm vào.

Path.write_bytes(data)

Mở tệp được trỏ đến ở chế độ byte, ghi data vào đó và đóng tệp

>>> p = Đường dẫn('my_binary_file')
>>> p.write_bytes(b'Nội dung tệp nhị phân')
20
>>> p.read_bytes()
b'Nội dung tập tin nhị phân'

Một tập tin hiện có cùng tên bị ghi đè.

Added in version 3.5.

Đọc thư mục

Path.iterdir()

Khi đường dẫn trỏ đến một thư mục, hãy mang lại các đối tượng đường dẫn của nội dung thư mục:

>>> p = Đường dẫn('docs')
>>> cho con trong p.iterdir(): con
...
PosixPath('docs/conf.py')
PosixPath('docs/_templates')
PosixPath('docs/make.bat')
PosixPath('docs/index.rst')
PosixPath('docs/_build')
PosixPath('docs/_static')
PosixPath('docs/Makefile')

Các phần tử con được sắp xếp theo thứ tự tùy ý và không bao gồm các mục đặc biệt '.''..'. Nếu một tệp bị xóa khỏi hoặc được thêm vào thư mục sau khi tạo trình vòng lặp, thì không xác định được liệu đối tượng đường dẫn cho tệp đó có được bao gồm hay không.

Nếu đường dẫn không phải là một thư mục hoặc không thể truy cập được, OSError sẽ được nâng lên.

Path.glob(pattern, *, case_sensitive=None, recurse_symlinks=False)

Đưa pattern tương đối đã cho vào thư mục được biểu thị bằng đường dẫn này, mang lại tất cả các tệp phù hợp (thuộc bất kỳ loại nào):

>>> được sắp xếp(Path('.').glob('*.py'))
[PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')]
>>> được sắp xếp(Path('.').glob('*/*.py'))
[PosixPath('docs/conf.py')]
>>> được sắp xếp(Path('.').glob('**/*.py'))
[PosixPath('build/lib/pathlib.py'),
 PosixPath('docs/conf.py'),
 PosixPath('pathlib.py'),
 PosixPath('setup.py'),
 PosixPath('test_pathlib.py')]

Ghi chú

Các đường dẫn được trả về không theo thứ tự cụ thể. Nếu bạn cần một thứ tự cụ thể, hãy sắp xếp kết quả.

Xem thêm

tài liệu Ngôn ngữ mẫu.

Theo mặc định hoặc khi đối số chỉ từ khóa case_sensitive được đặt thành None, phương thức này khớp với các đường dẫn bằng cách sử dụng quy tắc viết hoa dành riêng cho nền tảng: thông thường, phân biệt chữ hoa chữ thường trên POSIX và không phân biệt chữ hoa chữ thường trên Windows. Đặt case_sensitive thành True hoặc False để ghi đè hành vi này.

Theo mặc định hoặc khi đối số chỉ từ khóa recurse_symlinks được đặt thành False, phương thức này tuân theo các liên kết tượng trưng ngoại trừ khi mở rộng các ký tự đại diện "**". Đặt recurse_symlinks thành True để luôn theo các liên kết tượng trưng.

Ghi chú

Mọi ngoại lệ OSError phát sinh từ quá trình quét hệ thống tập tin đều bị chặn. Điều này bao gồm PermissionError khi truy cập các thư mục mà không có quyền đọc.

Tăng một auditing event pathlib.Path.glob với các đối số self, pattern.

Thay đổi trong phiên bản 3.12: Tham số case_sensitive đã được thêm vào.

Thay đổi trong phiên bản 3.13: Tham số recurse_symlinks đã được thêm vào.

Thay đổi trong phiên bản 3.13: Tham số pattern chấp nhận path-like object.

Thay đổi trong phiên bản 3.13: Mọi ngoại lệ OSError phát sinh từ quá trình quét hệ thống tập tin đều bị chặn. Trong các phiên bản trước, những ngoại lệ như vậy bị loại bỏ trong nhiều trường hợp, nhưng không phải tất cả.

Path.rglob(pattern, *, case_sensitive=None, recurse_symlinks=False)

Toàn cầu hóa pattern tương đối đã cho theo cách đệ quy. Điều này giống như gọi Path.glob() với "**/" được thêm vào trước pattern.

Ghi chú

Các đường dẫn được trả về không theo thứ tự cụ thể. Nếu bạn cần một thứ tự cụ thể, hãy sắp xếp kết quả.

Ghi chú

Mọi ngoại lệ OSError phát sinh từ quá trình quét hệ thống tập tin đều bị chặn. Điều này bao gồm PermissionError khi truy cập các thư mục mà không có quyền đọc.

Xem thêm

tài liệu Ngôn ngữ mẫuPath.glob().

Tăng một auditing event pathlib.Path.rglob với các đối số self, pattern.

Thay đổi trong phiên bản 3.12: Tham số case_sensitive đã được thêm vào.

Thay đổi trong phiên bản 3.13: Tham số recurse_symlinks đã được thêm vào.

Thay đổi trong phiên bản 3.13: Tham số pattern chấp nhận path-like object.

Path.walk(top_down=True, on_error=None, follow_symlinks=False)

Tạo tên tệp trong cây thư mục bằng cách duyệt cây từ trên xuống hoặc từ dưới lên.

Đối với mỗi thư mục trong cây thư mục có gốc tại self (bao gồm self nhưng loại trừ '.' và '..'), phương thức này mang lại 3 bộ (dirpath, dirnames, filenames).

dirpath là một Path cho thư mục hiện đang được duyệt, dirnames là danh sách các chuỗi cho tên của các thư mục con trong dirpath (không bao gồm '.''..') và filenames là danh sách các chuỗi cho tên của các tệp không phải thư mục trong dirpath. Để có đường dẫn đầy đủ (bắt đầu bằng self) tới một tệp hoặc thư mục trong dirpath, hãy thực hiện dirpath / name. Việc danh sách có được sắp xếp hay không phụ thuộc vào hệ thống tệp.

Nếu đối số tùy chọn top_down là đúng (là mặc định), thì bộ ba cho một thư mục sẽ được tạo trước bộ ba cho bất kỳ thư mục con nào của nó (các thư mục được đi từ trên xuống). Nếu top_down sai, bộ ba cho một thư mục sẽ được tạo sau bộ ba cho tất cả các thư mục con của nó (các thư mục được đi từ dưới lên). Bất kể giá trị của top_down là gì, danh sách các thư mục con đều được truy xuất trước khi bộ ba cho thư mục và các thư mục con của nó được duyệt.

Khi top_down là đúng, người gọi có thể sửa đổi danh sách dirnames tại chỗ (ví dụ: sử dụng del hoặc gán lát) và Path.walk() sẽ chỉ lặp lại vào các thư mục con có tên vẫn là dirnames. Điều này có thể được sử dụng để cắt bớt tìm kiếm hoặc áp đặt một thứ tự truy cập cụ thể hoặc thậm chí để thông báo cho Path.walk() về các thư mục mà người gọi tạo hoặc đổi tên trước khi tiếp tục lại Path.walk(). Việc sửa đổi dirnames khi top_down sai không ảnh hưởng đến hoạt động của Path.walk() vì các thư mục trong dirnames đã được tạo vào thời điểm dirnames được chuyển cho người gọi.

Theo mặc định, các lỗi từ os.scandir() sẽ bị bỏ qua. Nếu đối số tùy chọn on_error được chỉ định thì đối số đó phải là đối số có thể gọi được; nó sẽ được gọi với một đối số, một thể hiện OSError. Lệnh gọi có thể xử lý lỗi để tiếp tục quá trình đi bộ hoặc nâng lại nó để dừng quá trình đi bộ. Lưu ý rằng tên tệp có sẵn dưới dạng thuộc tính filename của đối tượng ngoại lệ.

Theo mặc định, Path.walk() không theo các liên kết tượng trưng mà thay vào đó thêm chúng vào danh sách filenames. Đặt follow_symlinks thành true để giải quyết các liên kết tượng trưng và đặt chúng vào dirnamesfilenames phù hợp với mục tiêu của chúng, sau đó truy cập các thư mục được trỏ đến bởi các liên kết tượng trưng (nếu được hỗ trợ).

Ghi chú

Xin lưu ý rằng việc đặt follow_symlinks thành true có thể dẫn đến đệ quy vô hạn nếu một liên kết trỏ đến thư mục mẹ của chính nó. Path.walk() không theo dõi các thư mục mà nó đã truy cập.

Ghi chú

Path.walk() giả định các thư mục mà nó đi qua không bị sửa đổi trong quá trình thực thi. Ví dụ: nếu một thư mục từ dirnames đã được thay thế bằng một liên kết tượng trưng và follow_symlinks là sai, Path.walk() vẫn sẽ cố gắng truy cập vào đó. Để ngăn chặn hành vi đó, hãy xóa các thư mục khỏi dirnames nếu thích hợp.

Ghi chú

Không giống như os.walk(), Path.walk() liệt kê các liên kết tượng trưng đến các thư mục trong filenames nếu follow_symlinks sai.

Ví dụ này hiển thị số byte được sử dụng bởi tất cả các tệp trong mỗi thư mục, đồng thời bỏ qua các thư mục __pycache__:

từ đường dẫn nhập pathlib
đối với thư mục gốc, thư mục, tệp trong Đường dẫn("cpython/Lib/concurrent").walk(on_error=print):
  in(
      gốc,
      "tiêu thụ",
      sum((root / file).stat().st_size cho tập tin trong tập tin),
      "byte trong",
      len(tập tin),
      "các tập tin không có thư mục"
  )
  nếu '__pycache__' trong thư mục:
        dirs.remove('__pycache__')

Ví dụ tiếp theo này là cách triển khai đơn giản của shutil.rmtree(). Đi theo cây từ dưới lên là điều cần thiết vì rmdir() không cho phép xóa thư mục trước khi nó trống:

# Delete mọi thứ đều có thể truy cập được từ thư mục "top".
# CAUTION: Nguy hiểm quá! Ví dụ: nếu top == Path('/'),
# it có thể xóa tất cả các tập tin của bạn.
cho thư mục gốc, thư mục, tập tin trong top.walk(top_down=False):
    cho tên trong tập tin:
        (gốc/tên).unlink()
    cho tên trong thư mục:
        (gốc / tên).rmdir()

Added in version 3.12.

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

Path.touch(mode=0o666, exist_ok=True)

Tạo một tập tin tại đường dẫn đã cho này. Nếu mode được cung cấp, nó sẽ được kết hợp với giá trị umask của quy trình để xác định chế độ tệp và cờ truy cập. Nếu tệp đã tồn tại, hàm sẽ thành công khi exist_ok là đúng (và thời gian sửa đổi của nó được cập nhật theo thời gian hiện tại), nếu không thì FileExistsError sẽ được nâng lên.

Xem thêm

Các phương thức open(), write_text()write_bytes() thường được sử dụng để tạo tệp.

Path.mkdir(mode=0o777, parents=False, exist_ok=False)

Tạo một thư mục mới tại đường dẫn đã cho này. Nếu mode được cung cấp, nó sẽ được kết hợp với giá trị umask của quy trình để xác định chế độ tệp và cờ truy cập. Nếu đường dẫn đã tồn tại, FileExistsError sẽ được nâng lên.

Nếu parents là đúng, mọi cha mẹ bị thiếu của đường dẫn này sẽ được tạo khi cần thiết; chúng được tạo với các quyền mặc định mà không tính đến mode (bắt chước lệnh POSIX mkdir -p).

Nếu parents là sai (mặc định), cha mẹ bị thiếu sẽ tăng FileNotFoundError.

Nếu exist_ok sai (mặc định), FileExistsError sẽ được nâng lên nếu thư mục đích đã tồn tại.

Nếu exist_ok là đúng, FileExistsError sẽ không được nâng lên trừ khi đường dẫn đã cho đã tồn tại trong hệ thống tệp và không phải là một thư mục (hành vi tương tự như lệnh POSIX mkdir -p).

Thay đổi trong phiên bản 3.5: Tham số exist_ok đã được thêm vào.

Biến đường dẫn này thành một liên kết tượng trưng trỏ tới target.

Trên Windows, một liên kết tượng trưng đại diện cho một tệp hoặc một thư mục và không tự động biến thành mục tiêu. Nếu có mục tiêu, loại liên kết tượng trưng sẽ được tạo để phù hợp. Nếu không, liên kết tượng trưng sẽ được tạo dưới dạng thư mục nếu target_is_directory là đúng hoặc liên kết tượng trưng tệp (mặc định) nếu ngược lại. Trên nền tảng không phải Windows, target_is_directory bị bỏ qua.

>>> p = Đường dẫn('mylink')
>>> p.symlink_to('setup.py')
>>> p.resolve()
PosixPath('/home/antoine/pathlib/setup.py')
>>> p.stat().st_size
956
>>> p.lstat().st_size
8

Ghi chú

Thứ tự của các đối số (liên kết, đích) ngược lại với os.symlink().

Thay đổi trong phiên bản 3.13: Tăng UnsupportedOperation nếu os.symlink() không có sẵn. Trong các phiên bản trước, NotImplementedError đã được nâng lên.

Đặt đường dẫn này thành một liên kết cứng tới cùng một tệp với target.

Ghi chú

Thứ tự của các đối số (liên kết, đích) ngược lại với os.link().

Added in version 3.10.

Thay đổi trong phiên bản 3.13: Tăng UnsupportedOperation nếu os.link() không có sẵn. Trong các phiên bản trước, NotImplementedError đã được nâng lên.

Sao chép, di chuyển và xóa

Path.copy(target, *, follow_symlinks=True, preserve_metadata=False)

Sao chép tệp hoặc cây thư mục này vào target đã cho và trả về một phiên bản Path mới trỏ đến target.

Nếu nguồn là một tệp thì đích sẽ được thay thế nếu đó là tệp hiện có. Nếu nguồn là một liên kết tượng trưng và follow_symlinks là đúng (mặc định), mục tiêu của liên kết tượng trưng sẽ được sao chép. Nếu không, liên kết tượng trưng sẽ được tạo lại ở đích.

Nếu preserve_metadata sai (mặc định), chỉ cấu trúc thư mục và dữ liệu tệp mới được đảm bảo sao chép. Đặt preserve_metadata thành true để đảm bảo rằng các quyền đối với tệp và thư mục, cờ, thời gian truy cập và sửa đổi lần cuối cũng như các thuộc tính mở rộng được sao chép ở những nơi được hỗ trợ. Đối số này không có tác dụng khi sao chép tệp trên Windows (nơi siêu dữ liệu luôn được bảo tồn).

Ghi chú

Khi được hệ điều hành và hệ thống tệp hỗ trợ, phương pháp này thực hiện một bản sao nhẹ, trong đó các khối dữ liệu chỉ được sao chép khi được sửa đổi. Điều này được gọi là sao chép trên ghi.

Added in version 3.14.

Path.copy_into(target_dir, *, follow_symlinks=True, preserve_metadata=False)

Sao chép tệp hoặc cây thư mục này vào target_dir đã cho, đây phải là một thư mục hiện có. Các đối số khác được xử lý giống hệt với Path.copy(). Trả về một phiên bản Path mới trỏ tới bản sao.

Added in version 3.14.

Path.rename(target)

Đổi tên tệp hoặc thư mục này thành target đã cho và trả về một phiên bản Path mới trỏ đến target. Trên Unix, nếu target tồn tại và là một tệp, nó sẽ được thay thế một cách âm thầm nếu người dùng có quyền. Trên Windows, nếu target tồn tại, FileExistsError sẽ được nâng lên. target có thể là một chuỗi hoặc một đối tượng đường dẫn khác:

>>> p = Đường dẫn('foo')
>>> p.open('w').write('some text')
9
>>> target = Đường dẫn('bar')
>>> p.rename(đích)
PosixPath('bar')
>>> target.open().read()
'một số văn bản'

Đường dẫn đích có thể là tuyệt đối hoặc tương đối. Đường dẫn tương đối được hiểu tương ứng với thư mục làm việc hiện tại, not thư mục của đối tượng Path.

Nó được triển khai theo os.rename() và đưa ra những đảm bảo tương tự.

Thay đổi trong phiên bản 3.8: Đã thêm giá trị trả về, trả về phiên bản Path mới.

Path.replace(target)

Đổi tên tệp hoặc thư mục này thành target đã cho và trả về một phiên bản Path mới trỏ đến target. Nếu target trỏ đến một tập tin hiện có hoặc thư mục trống, nó sẽ được thay thế vô điều kiện.

Đường dẫn đích có thể là tuyệt đối hoặc tương đối. Đường dẫn tương đối được hiểu tương ứng với thư mục làm việc hiện tại, not thư mục của đối tượng Path.

Thay đổi trong phiên bản 3.8: Đã thêm giá trị trả về, trả về phiên bản Path mới.

Path.move(target)

Di chuyển tệp hoặc cây thư mục này tới target đã cho và trả về một phiên bản Path mới trỏ đến target.

Nếu target không tồn tại, nó sẽ được tạo. Nếu cả đường dẫn này và target đều là các tệp hiện có thì mục tiêu sẽ bị ghi đè. Nếu cả hai đường dẫn đều trỏ đến cùng một tệp hoặc thư mục hoặc target là một thư mục không trống thì OSError sẽ được nâng lên.

Nếu cả hai đường dẫn đều nằm trên cùng một hệ thống tệp, việc di chuyển sẽ được thực hiện bằng os.replace(). Nếu không, đường dẫn này sẽ được sao chép (bảo toàn siêu dữ liệu và liên kết tượng trưng) rồi xóa.

Added in version 3.14.

Path.move_into(target_dir)

Di chuyển tệp hoặc cây thư mục này vào target_dir đã cho, đây phải là một thư mục hiện có. Trả về một phiên bản Path mới trỏ đến đường dẫn đã di chuyển.

Added in version 3.14.

Xóa tệp này hoặc liên kết tượng trưng. Nếu đường dẫn trỏ đến một thư mục, thay vào đó hãy sử dụng Path.rmdir().

Nếu missing_ok sai (mặc định), FileNotFoundError sẽ được nâng lên nếu đường dẫn không tồn tại.

Nếu missing_ok là đúng, các ngoại lệ FileNotFoundError sẽ bị bỏ qua (hành vi tương tự như lệnh POSIX rm -f).

Thay đổi trong phiên bản 3.8: Tham số missing_ok đã được thêm vào.

Path.rmdir()

Xóa thư mục này. Thư mục phải trống.

Quyền và quyền sở hữu

Path.owner(*, follow_symlinks=True)

Trả về tên của người dùng sở hữu tập tin. KeyError được nâng lên nếu không tìm thấy mã định danh người dùng của tệp (UID) trong cơ sở dữ liệu hệ thống.

Phương pháp này thường theo các liên kết tượng trưng; để có được chủ sở hữu của liên kết tượng trưng, ​​hãy thêm đối số follow_symlinks=False.

Thay đổi trong phiên bản 3.13: Tăng UnsupportedOperation nếu mô-đun pwd không khả dụng. Trong các phiên bản trước, NotImplementedError đã được nâng lên.

Thay đổi trong phiên bản 3.13: Tham số follow_symlinks đã được thêm vào.

Path.group(*, follow_symlinks=True)

Trả về tên của nhóm sở hữu tập tin. KeyError được nâng lên nếu không tìm thấy mã định danh nhóm của tệp (GID) trong cơ sở dữ liệu hệ thống.

Phương pháp này thường theo các liên kết tượng trưng; để lấy nhóm liên kết tượng trưng, ​​hãy thêm đối số follow_symlinks=False.

Thay đổi trong phiên bản 3.13: Tăng UnsupportedOperation nếu mô-đun grp không khả dụng. Trong các phiên bản trước, NotImplementedError đã được nâng lên.

Thay đổi trong phiên bản 3.13: Tham số follow_symlinks đã được thêm vào.

Path.chmod(mode, *, follow_symlinks=True)

Thay đổi chế độ và quyền của tệp, như os.chmod().

Phương pháp này thường theo liên kết tượng trưng. Một số phiên bản Unix hỗ trợ thay đổi quyền trên chính liên kết tượng trưng; trên các nền tảng này, bạn có thể thêm đối số follow_symlinks=False hoặc sử dụng lchmod().

>>> p = Đường dẫn('setup.py')
>>> p.stat().st_mode
33277
>>> p.chmod(0o444)
>>> p.stat().st_mode
33060

Thay đổi trong phiên bản 3.10: Tham số follow_symlinks đã được thêm vào.

Path.lchmod(mode)

Giống như Path.chmod() nhưng nếu đường dẫn trỏ đến một liên kết tượng trưng thì chế độ của liên kết tượng trưng sẽ thay đổi chứ không phải chế độ đích của nó.

Ngôn ngữ mẫu

Các ký tự đại diện sau được hỗ trợ trong các mẫu dành cho full_match(), glob()rglob():

** (toàn bộ phân khúc)

Khớp với bất kỳ số lượng phân đoạn tệp hoặc thư mục nào, bao gồm cả số 0.

* (toàn bộ phân khúc)

Khớp với một phân đoạn tệp hoặc thư mục.

* (một phần của phân khúc)

Khớp với bất kỳ số ký tự không phân cách nào, kể cả số 0.

?

Khớp với một ký tự không phân cách.

[seq]

Khớp với một ký tự trong seq, trong đó seq là một chuỗi ký tự. biểu thức phạm vi được hỗ trợ; ví dụ: [a-z] khớp với bất kỳ chữ cái ASCII viết thường nào. Có thể kết hợp nhiều phạm vi: [a-zA-Z0-9_] khớp với bất kỳ chữ cái, chữ số hoặc dấu gạch dưới nào của ASCII.

[!seq]

Khớp với một ký tự không có trong seq, trong đó seq tuân theo các quy tắc tương tự như trên.

Để khớp theo nghĩa đen, hãy gói các ký tự meta trong ngoặc đơn. Ví dụ: "[?]" khớp với ký tự "?".

Ký tự đại diện "**" cho phép tạo hình cầu đệ quy. Một vài ví dụ:

mẫu

Ý nghĩa

"**/*"

Bất kỳ đường dẫn nào có ít nhất một đoạn.

"**/*.py"

Bất kỳ đường dẫn nào có đoạn cuối cùng kết thúc bằng ".py".

"assets/**"

Bất kỳ đường dẫn nào bắt đầu bằng "assets/".

"assets/**/*"

Bất kỳ đường dẫn nào bắt đầu bằng "assets/", ngoại trừ chính "assets/".

Ghi chú

Globbing với ký tự đại diện "**" sẽ truy cập mọi thư mục trong cây. Cây thư mục lớn có thể mất nhiều thời gian để tìm kiếm.

Thay đổi trong phiên bản 3.13: Globbing với mẫu kết thúc bằng "**" sẽ trả về cả tệp và thư mục. Trong các phiên bản trước, chỉ có các thư mục được trả về.

Trong Path.glob()rglob(), một dấu gạch chéo ở cuối có thể được thêm vào mẫu để chỉ khớp với các thư mục.

Thay đổi trong phiên bản 3.11: Globbing với mẫu kết thúc bằng dấu phân cách thành phần tên đường dẫn (sep hoặc altsep) chỉ trả về các thư mục.

So sánh với mô-đun glob

Các mẫu được chấp nhận và kết quả do Path.glob()Path.rglob() tạo ra hơi khác so với các mẫu của mô-đun glob:

  1. Các tệp bắt đầu bằng dấu chấm không có gì đặc biệt trong pathlib. Điều này giống như chuyển include_hidden=True sang glob.glob().

  2. Các thành phần mẫu "**" luôn đệ quy trong pathlib. Điều này giống như chuyển recursive=True sang glob.glob().

  3. Các thành phần mẫu "**" không theo liên kết tượng trưng theo mặc định trong pathlib. Hành vi này không có hành vi tương đương trong glob.glob(), nhưng bạn có thể chuyển recurse_symlinks=True sang Path.glob() để có hành vi tương thích.

  4. Giống như tất cả các đối tượng PurePathPath, các giá trị được trả về từ Path.glob()Path.rglob() không bao gồm dấu gạch chéo ở cuối.

  5. Các giá trị được trả về từ path.glob()path.rglob() của pathlib bao gồm path làm tiền tố, không giống như kết quả của glob.glob(root_dir=path).

  6. Các giá trị được trả về từ path.glob()path.rglob() của pathlib có thể bao gồm chính path, ví dụ như khi toàn cầu hóa "**", trong khi kết quả của glob.glob(root_dir=path) không bao giờ bao gồm một chuỗi trống tương ứng với path.

So sánh với các mô-đun osos.path

pathlib triển khai các hoạt động đường dẫn bằng cách sử dụng các đối tượng PurePathPath và do đó nó được gọi là object-oriented. Mặt khác, các mô-đun osos.path cung cấp các chức năng hoạt động với các đối tượng strbytes cấp thấp, đây là một cách tiếp cận procedural hơn. Một số người dùng cho rằng phong cách hướng đối tượng dễ đọc hơn.

Nhiều hàm trong osos.path hỗ trợ đường dẫn bytespaths relative to directory descriptors. Những tính năng này không có sẵn trong pathlib.

Các loại strbytes của Python cũng như các phần của mô-đun osos.path, được viết bằng C và rất nhanh. pathlib được viết bằng Python thuần túy và thường chậm hơn, nhưng hiếm khi đủ chậm để quan trọng.

Quá trình chuẩn hóa đường dẫn của pathlib có quan điểm và nhất quán hơn một chút so với os.path. Ví dụ: trong khi os.path.abspath() loại bỏ các phân đoạn ".." khỏi một đường dẫn, điều này có thể thay đổi ý nghĩa của nó nếu có liên kết tượng trưng, ​​​​:meth:Path.absolute bảo tồn các phân đoạn này để đảm bảo an toàn hơn.

Việc chuẩn hóa đường dẫn của pathlib có thể khiến nó không phù hợp với một số ứng dụng:

  1. pathlib chuẩn hóa Path("my_folder/") thành Path("my_folder"), điều này thay đổi ý nghĩa của đường dẫn khi được cung cấp cho các API hệ điều hành và tiện ích dòng lệnh khác nhau. Cụ thể, việc không có dấu phân cách ở cuối có thể cho phép đường dẫn được giải quyết dưới dạng tệp hoặc thư mục chứ không chỉ là một thư mục.

  2. pathlib chuẩn hóa Path("./my_program") thành Path("my_program"), điều này thay đổi ý nghĩa của đường dẫn khi được sử dụng làm đường dẫn tìm kiếm thực thi, chẳng hạn như trong shell hoặc khi sinh ra một tiến trình con. Cụ thể, việc thiếu dấu phân cách trong đường dẫn có thể buộc nó phải được tra cứu trong PATH thay vì thư mục hiện tại.

Do những khác biệt này, pathlib không phải là sự thay thế sẵn có cho os.path.

Công cụ tương ứng

Dưới đây là bảng ánh xạ các hàm os khác nhau tới hàm PurePath/Path tương ứng của chúng.

osos.path

pathlib

os.path.dirname()

PurePath.parent

os.path.basename()

PurePath.name

os.path.splitext()

PurePath.stem, PurePath.suffix

os.path.join()

PurePath.joinpath()

os.path.isabs()

PurePath.is_absolute()

os.path.relpath()

PurePath.relative_to() [1]

os.path.expanduser()

Path.expanduser() [2]

os.path.realpath()

Path.resolve()

os.path.abspath()

Path.absolute() [3]

os.path.exists()

Path.exists()

os.path.isfile()

Path.is_file()

os.path.isdir()

Path.is_dir()

os.path.islink()

Path.is_symlink()

os.path.isjunction()

Path.is_junction()

os.path.ismount()

Path.is_mount()

os.path.samefile()

Path.samefile()

os.getcwd()

Path.cwd()

os.stat()

Path.stat()

os.lstat()

Path.lstat()

os.listdir()

Path.iterdir()

os.walk()

Path.walk() [4]

os.mkdir(), os.makedirs()

Path.mkdir()

os.link()

Path.hardlink_to()

os.symlink()

Path.symlink_to()

os.readlink()

Path.readlink()

os.rename()

Path.rename()

os.replace()

Path.replace()

os.remove(), os.unlink()

Path.unlink()

os.rmdir()

Path.rmdir()

os.chmod()

Path.chmod()

os.lchmod()

Path.lchmod()

Chú thích cuối trang

Giao thức

Mô-đun pathlib.types cung cấp các loại để kiểm tra loại tĩnh.

Added in version 3.14.

class pathlib.types.PathInfo

Một typing.Protocol mô tả thuộc tính Path.info. Việc triển khai có thể trả về kết quả được lưu trong bộ nhớ đệm từ các phương thức của chúng.

exists(*, follow_symlinks=True)

Trả về True nếu đường dẫn là một tệp hoặc thư mục hiện có hoặc bất kỳ loại tệp nào khác; trả về False nếu đường dẫn không tồn tại.

Nếu follow_symlinksFalse, trả về True cho các liên kết tượng trưng mà không kiểm tra xem mục tiêu của chúng có tồn tại hay không.

is_dir(*, follow_symlinks=True)

Trả về True nếu đường dẫn là một thư mục hoặc một liên kết tượng trưng trỏ đến một thư mục; trả về False nếu đường dẫn là (hoặc trỏ đến) bất kỳ loại tệp nào khác hoặc nếu nó không tồn tại.

Nếu follow_symlinksFalse, chỉ trả về True nếu đường dẫn là một thư mục (không đi theo các liên kết tượng trưng); trả về False nếu đường dẫn là bất kỳ loại tệp nào khác hoặc nếu nó không tồn tại.

is_file(*, follow_symlinks=True)

Trả về True nếu đường dẫn là một tệp hoặc một liên kết tượng trưng trỏ đến một tệp; trả về False nếu đường dẫn là (hoặc trỏ đến) một thư mục hoặc không phải tệp khác hoặc nếu nó không tồn tại.

Nếu follow_symlinksFalse, chỉ trả về True nếu đường dẫn là một tệp (không đi theo các liên kết tượng trưng); trả về False nếu đường dẫn là một thư mục hoặc không phải tệp khác hoặc nếu nó không tồn tại.

Trả về True nếu đường dẫn là một liên kết tượng trưng (ngay cả khi bị hỏng); trả về False nếu đường dẫn là một thư mục hoặc bất kỳ loại tệp nào hoặc nếu nó không tồn tại.