Hướng dẫn how do you write path names in python? - làm thế nào để bạn viết tên đường dẫn trong python?

Một trong những phiền toái của chương trình, Microsoft Windows sử dụng ký tự dấu gạch chéo ngược giữa các tên thư mục trong khi hầu hết mọi máy tính khác đều sử dụng dấu gạch chéo phía trước:

Đây là một tai nạn của lịch sử máy tính đầu năm 1980. Phiên bản đầu tiên của MS-DOS đã sử dụng ký tự Slash chuyển tiếp để chỉ định các tùy chọn dòng lệnh. Khi Microsoft thêm hỗ trợ cho các thư mục trong MS-DOS 2.0, nhân vật chém phía trước đã được thực hiện để họ sử dụng dấu gạch chéo ngược. Ba mươi lăm năm sau, chúng tôi vẫn bị mắc kẹt với sự không tương thích này.

Nếu bạn muốn mã Python của mình hoạt động trên cả Windows và Mac/Linux, bạn sẽ cần phải giải quyết các loại vấn đề dành riêng cho nền tảng này. May mắn thay, Python 3 có một mô -đun mới có tên Pathlib làm cho làm việc với các tệp gần như không đau.pathlib that makes working with files nearly painless.

Hãy cùng xem nhanh các cách xử lý các đường dẫn tên tệp khác nhau và xem Pathlib có thể làm cho cuộc sống của bạn tốt hơn như thế nào!pathlib can make your life better!

Giải pháp sai: Xây dựng đường dẫn tệp bằng tay

Hãy nói rằng bạn có một thư mục dữ liệu chứa một tệp mà bạn muốn mở trong chương trình Python của mình:

Đây là cách sai để mã hóa nó trong Python:

Lưu ý rằng tôi đã mã hóa đường dẫn bằng cách sử dụng dấu gạch chéo về phía trước theo kiểu Unix kể từ khi tôi trên máy Mac. Điều này sẽ khiến người dùng Windows tức giận.

Về mặt kỹ thuật, mã này vẫn sẽ hoạt động trên Windows vì Python có một hack nơi nó sẽ nhận ra một trong hai loại chém khi bạn gọi Open () trên Windows. Nhưng thậm chí vẫn còn, bạn không nên phụ thuộc vào điều đó. Không phải tất cả các thư viện Python sẽ hoạt động nếu bạn sử dụng sai loại chém trên hệ điều hành sai - đặc biệt nếu chúng giao tiếp với các chương trình hoặc thư viện bên ngoài.open() on Windows. But even still, you shouldn’t depend on that. Not all Python libraries will work if you use wrong kind of slash on the wrong operating system — especially if they interface with external programs or libraries.

Và sự hỗ trợ của Python, để trộn các loại chém là một hack chỉ có Windows không hoạt động ngược lại. Sử dụng dấu gạch chéo ngược trong mã sẽ hoàn toàn thất bại trên máy Mac:

Vì tất cả những lý do này và hơn thế nữa, viết mã với chuỗi đường dẫn được mã hóa cứng là loại điều sẽ khiến các lập trình viên khác nhìn bạn với sự nghi ngờ lớn. Nói chung, bạn nên cố gắng tránh nó.

Giải pháp cũ: Mô -đun Python từ OS.Path

Mô-đun Python sườn OS.PATH có rất nhiều công cụ để làm việc xung quanh các loại vấn đề hệ thống tập tin cụ thể của hệ điều hành.os.path module has lots of tools for working around these kinds of operating system-specific file system issues.

Bạn có thể sử dụng Os.Path.Join () để xây dựng chuỗi đường dẫn bằng cách sử dụng đúng loại chém cho hệ điều hành hiện tại:os.path.join() to build a path string using the right kind of slash for the current operating system:

Mã này sẽ hoạt động hoàn hảo trên cả Windows hoặc Mac. Vấn đề là nó là một nỗi đau để sử dụng. Viết ra os.path.join () và đi qua từng phần của đường dẫn dưới dạng một chuỗi riêng biệt và không trực quan.os.path.join() and passing in each part of the path as a separate string is wordy and unintuitive.

Vì hầu hết các chức năng trong mô -đun OS.Path cũng gây khó chịu tương tự khi sử dụng, các nhà phát triển thường quên quên sử dụng chúng ngay cả khi họ biết rõ hơn. Điều này dẫn đến rất nhiều lỗi đa nền tảng và người dùng tức giận.os.path module are similarly annoying to use, developers often “forget” to use them even when they know better. This leads to a lot of cross-platform bugs and angry users.

Giải pháp tốt hơn: Python 3 Pathlib!

Python 3.4 đã giới thiệu một thư viện tiêu chuẩn mới để xử lý các tệp và đường dẫn được gọi là pathlib - và nó rất tuyệt!pathlib — and it’s great!

Để sử dụng nó, bạn chỉ cần chuyển một đường dẫn hoặc tên tệp vào một đối tượng đường dẫn mới () bằng cách sử dụng dấu gạch chéo về phía trước và nó xử lý phần còn lại:

Lưu ý hai điều ở đây:

  1. Bạn nên sử dụng dấu gạch chéo về phía trước với các hàm pathlib. Đối tượng đường dẫn () sẽ chuyển đổi các dấu gạch chéo về phía trước thành đúng loại chém cho hệ điều hành hiện tại. Tốt đẹp!pathlib functions. The Path() object will convert forward slashes into the correct kind of slash for the current operating system. Nice!
  2. Nếu bạn muốn thêm vào đường dẫn, bạn có thể sử dụng / toán tử trực tiếp trong mã của mình. Nói lời tạm biệt để gõ ra os.path.join (a, b) nhiều lần./ operator directly in your code. Say goodbye to typing out os.path.join(a, b) over and over.

Và nếu đó là tất cả các pathlib đã làm, nó sẽ là một bổ sung tốt đẹp cho Python - nhưng nó làm nhiều hơn nữa!pathlib did, it would be a nice addition to Python — but it does a lot more!

Ví dụ: chúng ta có thể đọc nội dung của tệp văn bản mà không cần phải mở và đóng tệp:

Pro-tip: Các ví dụ trước là lỗi vì tệp đã mở không bao giờ được đóng. Cú pháp này tránh được lỗi đó hoàn toàn.

Trên thực tế, Pathlib làm cho hầu hết các hoạt động tệp tiêu chuẩn nhanh chóng và dễ dàng:pathlib makes most standard file operations quick and easy:

Bạn thậm chí có thể sử dụng pathlib để chuyển đổi một cách rõ ràng đường dẫn UNIX thành đường dẫn có định dạng Windows:pathlib to explicitly convert a Unix path into a Windows-formatted path:

Và nếu bạn thực sự muốn sử dụng dấu gạch chéo ngược trong mã của mình một cách an toàn, bạn có thể khai báo đường dẫn của mình vì Windows-smormatted và Pathlib có thể chuyển đổi nó để hoạt động trên hệ điều hành hiện tại:pathlib can convert it to work on the current operating system:

Nếu bạn muốn có được ưa thích, bạn thậm chí có thể sử dụng pathlib để thực hiện những việc như giải quyết các đường dẫn tệp tương đối, đường dẫn chia sẻ mạng Parse và tạo tệp: // URL. Dưới đây, một ví dụ sẽ mở một tệp cục bộ trong trình duyệt web của bạn chỉ bằng hai dòng một mã:pathlib to do things like resolve relative file paths, parse network share paths and generate file:// urls. Here’s an example that will open a local file in your web browser with just two lines a code:

Đây chỉ là một đỉnh nhỏ ở Pathlib. Nó là một sự thay thế tuyệt vời cho nhiều chức năng liên quan đến tệp khác nhau được sử dụng để phân tán xung quanh các mô-đun Python khác nhau. Kiểm tra nó ra!pathlib. It’s a great replacement for lots of different file-related functionality that used to be scattered around different Python modules. Check it out!

Mã nguồn: lib/posixpath.py (cho posix) và lib/ntpath.py (cho windows). Lib/posixpath.py (for POSIX) and Lib/ntpath.py (for Windows).


Mô -đun này thực hiện một số chức năng hữu ích trên các tên đường dẫn. Để đọc hoặc ghi các tệp, hãy xem open() và để truy cập hệ thống tập tin, hãy xem mô -đun os. Các tham số đường dẫn có thể được truyền dưới dạng chuỗi hoặc byte hoặc bất kỳ đối tượng nào thực hiện giao thức os.PathLike.

Không giống như vỏ Unix, Python không thực hiện bất kỳ mở rộng đường dẫn tự động nào. Các chức năng như expanduser()

>>> splitdrive("c:/dir")
("c:", "/dir")
0 có thể được gọi rõ ràng khi một ứng dụng mong muốn mở rộng đường dẫn giống như vỏ. (Xem thêm mô -đun
>>> splitdrive("c:/dir")
("c:", "/dir")
1.)

Xem thêm

Mô-đun

>>> splitdrive("c:/dir")
("c:", "/dir")
2 cung cấp các đối tượng đường dẫn cấp cao.

Ghi chú

Tất cả các chức năng này chỉ chấp nhận các byte hoặc chỉ các đối tượng chuỗi làm tham số của chúng. Kết quả là một đối tượng cùng loại, nếu một đường dẫn hoặc tên tệp được trả về.

Ghi chú

Tất cả các chức năng này chỉ chấp nhận các byte hoặc chỉ các đối tượng chuỗi làm tham số của chúng. Kết quả là một đối tượng cùng loại, nếu một đường dẫn hoặc tên tệp được trả về.

  • Vì các hệ điều hành khác nhau có quy ước tên đường dẫn khác nhau, có một số phiên bản của mô -đun này trong thư viện tiêu chuẩn. Mô -đun

    >>> splitdrive("c:/dir")
    ("c:", "/dir")
    
    3 luôn là mô -đun đường dẫn phù hợp với Python hệ điều hành đang chạy và do đó có thể sử dụng cho các đường dẫn cục bộ. Tuy nhiên, bạn cũng có thể nhập và sử dụng các mô -đun riêng lẻ nếu bạn muốn thao tác một đường dẫn luôn ở một trong các định dạng khác nhau. Tất cả đều có cùng một giao diện:

  • >>> splitdrive("c:/dir")
    ("c:", "/dir")
    
    4 cho các đường dẫn kiểu UNIX

>>> splitdrive("c:/dir")
("c:", "/dir")
5 cho đường dẫn Windows
>>> splitdrive("c:/dir")
("c:", "/dir")
6,
>>> splitdrive("c:/dir")
("c:", "/dir")
7,
>>> splitdrive("c:/dir")
("c:", "/dir")
8,
>>> splitdrive("c:/dir")
("c:", "/dir")
9,
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
0, and
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
1 now return
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
2 instead of raising an exception for paths that contain characters or bytes unrepresentable at the OS level.

Đã thay đổi trong phiên bản 3.8:
>>> splitdrive("c:/dir")
("c:", "/dir")
6,
>>> splitdrive("c:/dir")
("c:", "/dir")
7,
>>> splitdrive("c:/dir")
("c:", "/dir")
8,
>>> splitdrive("c:/dir")
("c:", "/dir")
9,
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
0 và
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
1 Bây giờ trả về
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
2 thay vì tăng ngoại lệ cho các đường dẫn có chứa các ký tự hoặc byte không thể đại diện ở cấp hệ điều hành.
abspath(path)

os.path.abspath (đường dẫn) ¶

Trả về một phiên bản tuyệt đối được chuẩn hóa của đường dẫn đường dẫn. Trên hầu hết các nền tảng, điều này tương đương với việc gọi hàm
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
3 như sau:
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
4.
basename(path)

os.path.basename (đường dẫn) ¶basename program; where basename for

>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
6 returns
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
7, the
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
8 function returns an empty string (
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
9).

Trả về tên cơ sở của đường dẫn đường dẫn. Đây là phần tử thứ hai của cặp được trả về bằng cách chuyển đường dẫn đến hàm
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
5. Lưu ý rằng kết quả của chức năng này khác với chương trình Unix Basename; Trong trường hợp basename cho
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
6 trả về
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
7, hàm
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
8 trả về một chuỗi trống (
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
9).
commonpath(paths)

os.path.commonpath (đường dẫn) ¶

Trả về con đường con phổ biến dài nhất của mỗi tên đường dẫn trong các đường dẫn trình tự. Tăng

>>> splitext('bar')
('bar', '')
0 Nếu các đường dẫn chứa cả tên đường dẫn tuyệt đối và tương đối, các đường dẫn nằm trên các ổ đĩa khác nhau hoặc nếu đường dẫn trống. Không giống như
>>> splitext('bar')
('bar', '')
1, điều này trả về một đường dẫn hợp lệ.: Unix, Windows.

Tính khả dụng: UNIX, Windows.

Mới trong phiên bản 3.5.commonprefix(list)

os.path.commonprefix (danh sách) ¶

Ghi chú

Tất cả các chức năng này chỉ chấp nhận các byte hoặc chỉ các đối tượng chuỗi làm tham số của chúng. Kết quả là một đối tượng cùng loại, nếu một đường dẫn hoặc tên tệp được trả về.

>>> os.path.commonprefix(['/usr/lib', '/usr/local/lib'])
'/usr/l'

>>> os.path.commonpath(['/usr/lib', '/usr/local/lib'])
'/usr'

Vì các hệ điều hành khác nhau có quy ước tên đường dẫn khác nhau, có một số phiên bản của mô -đun này trong thư viện tiêu chuẩn. Mô -đun
>>> splitdrive("c:/dir")
("c:", "/dir")
3 luôn là mô -đun đường dẫn phù hợp với Python hệ điều hành đang chạy và do đó có thể sử dụng cho các đường dẫn cục bộ. Tuy nhiên, bạn cũng có thể nhập và sử dụng các mô -đun riêng lẻ nếu bạn muốn thao tác một đường dẫn luôn ở một trong các định dạng khác nhau. Tất cả đều có cùng một giao diện:
dirname(path)

>>> splitdrive("c:/dir")
("c:", "/dir")
4 cho các đường dẫn kiểu UNIX

>>> splitdrive("c:/dir")
("c:", "/dir")
5 cho đường dẫn Windows
exists(path)

Đã thay đổi trong phiên bản 3.8:

>>> splitdrive("c:/dir")
("c:", "/dir")
6,
>>> splitdrive("c:/dir")
("c:", "/dir")
7,
>>> splitdrive("c:/dir")
("c:", "/dir")
8,
>>> splitdrive("c:/dir")
("c:", "/dir")
9,
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
0 và
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
1 Bây giờ trả về
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
2 thay vì tăng ngoại lệ cho các đường dẫn có chứa các ký tự hoặc byte không thể đại diện ở cấp hệ điều hành.

os.path.abspath (đường dẫn) ¶path can now be an integer:

>>> splitext('bar')
('bar', '')
5 is returned if it is an open file descriptor,
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
2 otherwise.

os.path.lexists (đường dẫn) ¶lexists(path)

Trả về

>>> splitext('bar')
('bar', '')
5 nếu đường dẫn đề cập đến một đường dẫn hiện có. Trả về
>>> splitext('bar')
('bar', '')
5 cho các liên kết tượng trưng bị hỏng. Tương đương với
>>> splitdrive("c:/dir")
("c:", "/dir")
6 trên các nền tảng thiếu
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
4.

os.path.expanduser (đường dẫn) ¶expanduser(path)

Trên Unix và Windows, hãy trả lại đối số với thành phần ban đầu là

>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
5 hoặc
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
6 được thay thế bằng thư mục nhà của người dùng đó.

Trên Unix, một

>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
5 ban đầu được thay thế bằng biến môi trường
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
8 nếu nó được đặt; Mặt khác, thư mục nhà của người dùng hiện tại được tra cứu trong thư mục mật khẩu thông qua mô-đun tích hợp
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
9. Một
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
6 ban đầu được tra cứu trực tiếp trong thư mục mật khẩu.
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
8 if it is set; otherwise the current user’s home directory is looked up in the password directory through the built-in module
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
9. An initial
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
6 is looked up directly in the password directory.

Trên Windows,

>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
1 sẽ được sử dụng nếu được đặt, nếu không, sự kết hợp của
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
2 và
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
3 sẽ được sử dụng. Một
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
6 ban đầu được xử lý bằng cách kiểm tra xem thành phần thư mục cuối cùng của thư mục nhà của người dùng hiện tại có khớp với
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
5 không và thay thế nó nếu vậy.
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
1 will be used if set, otherwise a combination of
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
2 and
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
3 will be used. An initial
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
6 is handled by checking that the last directory component of the current user’s home directory matches
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
5, and replacing it if so.

Nếu việc mở rộng không thành công hoặc nếu đường dẫn không bắt đầu bằng một tilde, đường dẫn được trả về không thay đổi.

Đã thay đổi trong phiên bản 3.8: Không còn sử dụng

>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
8 trên Windows.No longer uses
>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
8 on Windows.

os.path.expandvars (đường dẫn) ¶expandvars(path)

Trả lại đối số với các biến môi trường được mở rộng. Các chất nền của mẫu

>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
7 hoặc
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
8 được thay thế bằng giá trị của tên biến môi trường. Các tên biến và tham chiếu không định dạng cho các biến không tồn tại không thay đổi.

Trên Windows, các bản mở rộng

>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
9 được hỗ trợ ngoài
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
7 và
>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')
8.

os.path.getatime (đường dẫn) ¶getatime(path)

Trả lại thời gian truy cập cuối cùng của đường dẫn. Giá trị trả về là số điểm nổi cho số giây kể từ thời đại (xem mô -đun open()2). Tăng open()3 nếu tệp không tồn tại hoặc không thể truy cập được.

os.path.getMtime (đường dẫn) ¶getmtime(path)

Trả lại thời gian sửa đổi cuối cùng của đường dẫn. Giá trị trả về là số điểm nổi cho số giây kể từ thời đại (xem mô -đun open()2). Tăng open()3 nếu tệp không tồn tại hoặc không thể truy cập được.

os.path.getctime (đường dẫn) ¶getctime(path)

Trả về hệ thống CT giờ C, trên một số hệ thống (như Unix) là thời điểm thay đổi siêu dữ liệu cuối cùng và trên các hệ thống khác (như Windows), là thời gian tạo cho đường dẫn. Giá trị trả về là một số cho số giây kể từ thời đại (xem mô -đun open()2). Tăng open()3 nếu tệp không tồn tại hoặc không thể truy cập được.

os.path.getSize (đường dẫn) ¶getsize(path)

Trả về kích thước, bằng byte, của đường dẫn. Tăng open()3 nếu tệp không tồn tại hoặc không thể truy cập được.

os.path.isabs (đường dẫn) ¶isabs(path)

Trả về

>>> splitext('bar')
('bar', '')
5 nếu đường dẫn là một tên đường dẫn tuyệt đối. Trên UNIX, điều đó có nghĩa là nó bắt đầu bằng một dấu gạch chéo, trên Windows rằng nó bắt đầu bằng một vết chém (trở lại) sau khi cắt một ký tự ổ đĩa tiềm năng.

os.path.isfile (đường dẫn) ¶isfile(path)

Trả về

>>> splitext('bar')
('bar', '')
5 nếu đường dẫn là tệp thông thường os1. Điều này theo các liên kết tượng trưng, ​​vì vậy cả
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
0 và
>>> splitdrive("c:/dir")
("c:", "/dir")
9 đều có thể đúng cho cùng một đường dẫn.

os.path.isdir (đường dẫn) ¶isdir(path)

Trả về

>>> splitext('bar')
('bar', '')
5 nếu đường dẫn là thư mục os1. Điều này theo các liên kết tượng trưng, ​​vì vậy cả
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
0 và
>>> splitdrive("c:/dir")
("c:", "/dir")
8 đều có thể đúng cho cùng một đường dẫn.

os.path.islink (đường dẫn) ¶islink(path)

Trả về

>>> splitext('bar')
('bar', '')
5 Nếu đường dẫn đề cập đến một mục nhập thư mục os1 là một liên kết tượng trưng. Luôn luôn
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
2 nếu các liên kết tượng trưng không được hỗ trợ bởi thời gian chạy Python.

Os.Path.ismount (Path) ¶ismount(path)

Trả về

>>> splitext('bar')
('bar', '')
5 Nếu đường dẫn đường dẫn là điểm gắn kết: một điểm trong hệ thống tệp trong đó một hệ thống tệp khác đã được gắn. Trên POSIX, chức năng kiểm tra xem cha mẹ đường dẫn, os.PathLike2, có trên một thiết bị khác với đường dẫn hay liệu os.PathLike2 và đường dẫn chỉ vào cùng một nút I trên cùng một thiết bị-đ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. Nó không thể phát hiện đáng tin cậy các gắn kết trên cùng một hệ thống tập tin. Trên Windows, root ký tự ổ đĩa và UNC chia sẻ luôn là điểm gắn kết và đối với bất kỳ đường dẫn nào khác os.PathLike4 được gọi để xem nó có khác với đường dẫn đầu vào không.

Mới trong phiên bản 3.4: Hỗ trợ phát hiện các điểm gắn không root trên Windows.Support for detecting non-root mount points on Windows.

os.path.join (đường dẫn, *đường dẫn) ¶join(path, *paths)

Tham gia một hoặc nhiều thành phần đường dẫn một cách thông minh. Giá trị trả về là sự kết hợp của đường dẫn và bất kỳ thành viên nào của *đường dẫn với chính xác một dấu phân thư theo từng phần không trống ngoại trừ phần cuối, có nghĩa là kết quả sẽ chỉ kết thúc trong một dấu phân cách nếu phần cuối trống. Nếu một thành phần là một đường dẫn tuyệt đối, tất cả các thành phần trước đó sẽ bị vứt đi và tham gia tiếp tục từ thành phần đường dẫn tuyệt đối.

Trên Windows, ký tự ổ đĩa không được đặt lại khi gặp phải một thành phần đường dẫn tuyệt đối (ví dụ: os.PathLike5). Nếu một thành phần chứa một ký tự ổ đĩa, tất cả các thành phần trước đó sẽ bị vứt đi và ký tự ổ đĩa được đặt lại. Lưu ý rằng vì có một thư mục hiện tại cho mỗi ổ đĩa, os.PathLike6 đại diện cho một đường dẫn so với thư mục hiện tại trên ổ đĩa os.PathLike7 (os.PathLike8), chứ không phải os.PathLike9.

Đã thay đổi trong phiên bản 3.6: Chấp nhận một đối tượng giống như đường dẫn cho đường dẫn và đường dẫn.Accepts a path-like object for path and paths.

os.path.normcase (đường dẫn) ¶normcase(path)

Bình thường hóa trường hợp của một tên đường dẫn. Trên Windows, chuyển đổi tất cả các ký tự trong tên đường dẫn thành chữ thường và cũng chuyển đổi các dấu gạch chéo về phía trước thành các dấu gạch chéo lùi. Trên các hệ điều hành khác, trả lại đường dẫn không thay đổi.

os.path.normpath (đường dẫn) ¶normpath(path)

Bình thường hóa một tên đường dẫn bằng cách thu gọn các dấu phân cách dự phòng và các tham chiếu cấp độ lên để expanduser()0, expanduser()1, expanduser()2 và expanduser()3 đều trở thành expanduser()4. Thao tác chuỗi này có thể thay đổi ý nghĩa của một đường dẫn chứa các liên kết tượng trưng. Trên Windows, nó chuyển đổi dấu gạch chéo về phía trước thành chém lùi. Để bình thường hóa trường hợp, sử dụng expanduser()5.

Ghi chú

Trên các hệ thống POSIX, theo phiên bản IEEE STD 1003.1 2013; 4.13 Độ phân giải tên đường dẫn, nếu một tên đường dẫn bắt đầu bằng chính xác hai dấu gạch chéo, thành phần đầu tiên theo các ký tự hàng đầu có thể được giải thích theo cách xác định thực hiện, mặc dù nhiều hơn hai ký tự hàng đầu sẽ được coi là một ký tự duy nhất.

os.path.realpath (đường dẫn, *, nghiêm ngặt = false) ¶realpath(path, *, strict=False)

Trả về đường dẫn chính tắc của tên tệp được chỉ định, loại bỏ mọi liên kết tượng trưng gặp phải trong đường dẫn (nếu chúng được hỗ trợ bởi hệ điều hành).

Nếu một đường dẫn không tồn tại hoặc một vòng lặp symlink gặp phải, và nghiêm ngặt là

>>> splitext('bar')
('bar', '')
5, open()3 sẽ được nâng lên. Nếu nghiêm ngặt là
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
2, đường dẫn được giải quyết càng xa càng tốt và bất kỳ phần còn lại nào cũng được thêm vào mà không kiểm tra xem nó có tồn tại hay không.

Ghi chú

Trên các hệ thống POSIX, theo phiên bản IEEE STD 1003.1 2013; 4.13 Độ phân giải tên đường dẫn, nếu một tên đường dẫn bắt đầu bằng chính xác hai dấu gạch chéo, thành phần đầu tiên theo các ký tự hàng đầu có thể được giải thích theo cách xác định thực hiện, mặc dù nhiều hơn hai ký tự hàng đầu sẽ được coi là một ký tự duy nhất.

os.path.realpath (đường dẫn, *, nghiêm ngặt = false) ¶

Trả về đường dẫn chính tắc của tên tệp được chỉ định, loại bỏ mọi liên kết tượng trưng gặp phải trong đường dẫn (nếu chúng được hỗ trợ bởi hệ điều hành).Symbolic links and junctions are now resolved on Windows.

Nếu một đường dẫn không tồn tại hoặc một vòng lặp symlink gặp phải, và nghiêm ngặt là

>>> splitext('bar')
('bar', '')
5, open()3 sẽ được nâng lên. Nếu nghiêm ngặt là
>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
2, đường dẫn được giải quyết càng xa càng tốt và bất kỳ phần còn lại nào cũng được thêm vào mà không kiểm tra xem nó có tồn tại hay không.The strict parameter was added.

Chức năng này mô phỏng quy trình hệ điều hành để tạo ra một đường dẫn kinh điển, khác nhau một chút giữa Windows và UNIX đối với cách các liên kết và các thành phần đường dẫn tiếp theo tương tác.relpath(path, start=os.curdir)

API hệ điều hành thực hiện các đường dẫn kinh điển khi cần thiết, do đó, nó thường không cần thiết để gọi chức năng này.

Thay đổi trong phiên bản 3.8: Các liên kết và mối nối tượng trưng hiện được giải quyết trên Windows.

Thay đổi trong phiên bản 3.10: Tham số nghiêm ngặt đã được thêm vào.: Unix, Windows.

os.path.relpath (đường dẫn, start = os.curdir) ¶samefile(path2, path2)

Trả lại một filepath tương đối cho đường dẫn từ thư mục hiện tại hoặc từ thư mục bắt đầu tùy chọn. Đây là một tính toán đường dẫn: Hệ thống tập tin không được truy cập để xác nhận sự tồn tại hoặc bản chất của đường dẫn hoặc bắt đầu. Trên Windows,

>>> splitext('bar')
('bar', '')
0 được nâng lên khi đường dẫn và bắt đầu trên các ổ đĩa khác nhau.

Thay đổi trong phiên bản 3.10: Tham số nghiêm ngặt đã được thêm vào.: Unix, Windows.

os.path.relpath (đường dẫn, start = os.curdir) ¶Added Windows support.

Trả lại một filepath tương đối cho đường dẫn từ thư mục hiện tại hoặc từ thư mục bắt đầu tùy chọn. Đây là một tính toán đường dẫn: Hệ thống tập tin không được truy cập để xác nhận sự tồn tại hoặc bản chất của đường dẫn hoặc bắt đầu. Trên Windows,

>>> splitext('bar')
('bar', '')
0 được nâng lên khi đường dẫn và bắt đầu trên các ổ đĩa khác nhau.Windows now uses the same implementation as all other platforms.

Bắt đầu mặc định đến
>>> splitdrive("c:/dir")
("c:", "/dir")
00.
sameopenfile(fp1, fp2)

Tính khả dụng: UNIX, Windows.

Thay đổi trong phiên bản 3.10: Tham số nghiêm ngặt đã được thêm vào.: Unix, Windows.

os.path.relpath (đường dẫn, start = os.curdir) ¶Added Windows support.

Trả lại một filepath tương đối cho đường dẫn từ thư mục hiện tại hoặc từ thư mục bắt đầu tùy chọn. Đây là một tính toán đường dẫn: Hệ thống tập tin không được truy cập để xác nhận sự tồn tại hoặc bản chất của đường dẫn hoặc bắt đầu. Trên Windows,
>>> splitext('bar')
('bar', '')
0 được nâng lên khi đường dẫn và bắt đầu trên các ổ đĩa khác nhau.
samestat(stat1, stat2)

Bắt đầu mặc định đến

>>> splitdrive("c:/dir")
("c:", "/dir")
00.

Thay đổi trong phiên bản 3.10: Tham số nghiêm ngặt đã được thêm vào.: Unix, Windows.

os.path.relpath (đường dẫn, start = os.curdir) ¶Added Windows support.

Trả lại một filepath tương đối cho đường dẫn từ thư mục hiện tại hoặc từ thư mục bắt đầu tùy chọn. Đây là một tính toán đường dẫn: Hệ thống tập tin không được truy cập để xác nhận sự tồn tại hoặc bản chất của đường dẫn hoặc bắt đầu. Trên Windows,
>>> splitext('bar')
('bar', '')
0 được nâng lên khi đường dẫn và bắt đầu trên các ổ đĩa khác nhau.
split(path)

Bắt đầu mặc định đến

>>> splitdrive("c:/dir")
("c:", "/dir")
00.

Tính khả dụng: UNIX, Windows.splitdrive(path)

os.path.samefile (PATH2, PATH2) ¶

Trả về

>>> splitext('bar')
('bar', '')
5 Nếu cả hai đối số đường dẫn tham khảo cùng một tệp hoặc thư mục. Điều này được xác định bởi số thiết bị và số nút I và tăng ngoại lệ nếu cuộc gọi
>>> splitext('bar')
('bar', '')
8 trên một trong hai tên đường dẫn không thành công.

Đã thay đổi trong phiên bản 3.2: Đã thêm hỗ trợ Windows.

>>> splitdrive("c:/dir")
("c:", "/dir")

Đã thay đổi trong phiên bản 3.4: Windows hiện sử dụng cùng một triển khai như tất cả các nền tảng khác.

>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")

os.path.sameopenfile (FP1, FP2) ¶splitext(path)

Trả về

>>> splitext('bar')
('bar', '')
5 Nếu các mô tả tệp FP1 và FP2 tham khảo cùng một tệp.

Nếu đường dẫn không chứa tiện ích mở rộng, ext sẽ là

>>> splitdrive("//host/computer/dir")
("//host/computer", "/dir")
9:

>>> splitext('bar')
('bar', '')

Nếu đường dẫn chứa một phần mở rộng, thì EXT sẽ được đặt thành tiện ích mở rộng này, bao gồm cả giai đoạn hàng đầu.Lưu ý rằng các giai đoạn trước sẽ bị bỏ qua:

>>> splitext('foo.bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')

Các giai đoạn hàng đầu của thành phần cuối cùng của đường dẫn được coi là một phần của gốc:

>>> splitext('.cshrc')
('.cshrc', '')
>>> splitext('/foo/....jpg')
('/foo/....jpg', '')

os.path.supports_unicode_filenames¶supports_unicode_filenames

>>> splitext('bar')
('bar', '')
5 Nếu các chuỗi Unicode tùy ý có thể được sử dụng làm tên tệp (trong các giới hạn được áp đặt bởi hệ thống tệp).