os.path --- Các thao tác tên đường dẫn phổ biến

Source code: Lib/genericpath.py, Lib/posixpath.py (dành cho POSIX) và Lib/ntpath.py (dành cho Windows).


Mô-đun này thực hiện một số chức năng hữu ích trên tên đường dẫn. Để đọc hoặc ghi tệp, hãy xem open() và để truy cập hệ thống tệp, 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 triển khai giao thức os.PathLike.

Không giống như Unix shell, Python không thực hiện bất kỳ mở rộng đường dẫn automatic nào. Các hàm như expanduser()expandvars() có thể được gọi một cách rõ ràng khi một ứng dụng muốn mở rộng đường dẫn giống shell. (Xem thêm mô-đun glob.)

Xem thêm

Mô-đun pathlib cung cấp các đối tượng đường dẫn cấp cao.

Ghi chú

Tất cả các hàm này chỉ chấp nhận 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 trả về một đường dẫn hoặc tên tệp.

Ghi chú

Vì các hệ điều hành khác nhau có quy ước tên đường dẫn khác nhau nên có một số phiên bản của mô-đun này trong thư viện chuẩn. Mô-đun os.path luôn là mô-đun đường dẫn phù hợp với hệ điều hành Python đang chạy và do đó có thể sử dụng được 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 với đường dẫn always theo một trong các định dạng khác nhau. Tất cả đều có giao diện giống nhau:

  • posixpath cho đường dẫn kiểu UNIX

  • ntpath cho đường dẫn Windows

Thay đổi trong phiên bản 3.8: exists(), lexists(), isdir(), isfile(), islink()ismount() hiện trả về False thay vì đưa ra ngoại lệ cho các đường dẫn chứa các ký tự hoặc byte không thể biểu thị được ở cấp hệ điều hành.

os.path.abspath(path)

Trả về phiên bản tuyệt đối đã chuẩn hóa của tên đường dẫn path. 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 normpath(join(os.getcwd(), path)).

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.basename(path, /)

Trả về tên cơ sở của tên đường dẫn path. Đây là phần tử thứ hai của cặp được trả về bằng cách chuyển path cho hàm split(). Lưu ý rằng kết quả của hàm này khác với chương trình Unix basename; trong đó basename cho '/foo/bar/' trả về 'bar', hàm basename() trả về một chuỗi trống ('').

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.commonpath(paths)

Trả về đường dẫn con chung dài nhất của mỗi tên đường dẫn trong paths có thể lặp lại. Tăng ValueError nếu paths chứa cả tên đường dẫn tuyệt đối và tương đối, nếu paths nằm trên các ổ đĩa khác nhau hoặc nếu paths trống. Không giống như commonprefix(), điều này trả về một đường dẫn hợp lệ.

Added in version 3.5.

Thay đổi trong phiên bản 3.6: Chấp nhận một chuỗi path-like objects.

Thay đổi trong phiên bản 3.13: Bây giờ, bất kỳ lần lặp nào cũng có thể được chuyển, thay vì chỉ các chuỗi.

os.path.commonprefix(list, /)

Trả về tiền tố chuỗi dài nhất (lấy theo từng ký tự) là tiền tố của tất cả các chuỗi trong list. Nếu list trống, trả về chuỗi trống ('').

Cảnh báo

Hàm này có thể trả về các đường dẫn không hợp lệ vì nó hoạt động từng ký tự một. Nếu bạn cần common path prefix thì thuật toán được triển khai trong chức năng này không an toàn. Sử dụng commonpath() để tìm tiền tố đường dẫn chung.

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

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

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.dirname(path, /)

Trả về tên thư mục của tên đường dẫn path. Đây là phần tử đầu tiên của cặp được trả về bằng cách chuyển path cho hàm split().

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.exists(path)

Trả về True nếu path đề cập đến đường dẫn hiện có hoặc bộ mô tả tệp đang mở. Trả về False cho các liên kết tượng trưng bị hỏng. Trên một số nền tảng, chức năng này có thể trả về False nếu không được cấp quyền để thực thi os.stat() trên tệp được yêu cầu, ngay cả khi path tồn tại trên thực tế.

Thay đổi trong phiên bản 3.3: path bây giờ có thể là một số nguyên: True được trả về nếu nó là một bộ mô tả tệp đang mở, False nếu không.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.lexists(path)

Trả về True nếu path đề cập đến một đường dẫn hiện có, bao gồm cả các liên kết tượng trưng bị hỏng. Tương đương với exists() trên nền tảng thiếu os.lstat().

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.expanduser(path)

Trên Unix và Windows, trả về đối số có thành phần ban đầu là ~ hoặc ~user được thay thế bằng thư mục chính của user đó.

Trên Unix, ~ ban đầu được thay thế bằng biến môi trường HOME nếu nó được đặt; nếu không thì thư mục chính của người dùng hiện tại sẽ được tra cứu trong thư mục mật khẩu thông qua mô-đun tích hợp pwd. Một ~user ban đầu được tra cứu trực tiếp trong thư mục mật khẩu.

Trên Windows, USERPROFILE sẽ được sử dụng nếu được đặt, nếu không thì sự kết hợp giữa HOMEPATHHOMEDRIVE sẽ được sử dụng. Một ~user ban đầu được xử lý bằng cách kiểm tra xem thành phần thư mục cuối cùng trong thư mục chính của người dùng hiện tại có khớp với USERNAME hay không và thay thế nó nếu có.

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 dấu ngã thì đường dẫn sẽ được trả về không thay đổi.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.8: Không còn sử dụng HOME trên Windows.

os.path.expandvars(path)

Trả về đối số với các biến môi trường được mở rộng. Các chuỗi con có dạng $name hoặc ${name} được thay thế bằng giá trị của biến môi trường name. Tên biến không đúng định dạng và tham chiếu đến các biến không tồn tại được giữ nguyên.

Trên Windows, các bản mở rộng %name% được hỗ trợ ngoài $name${name}.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.getatime(path, /)

Trả về thời gian truy cập lần cuối của path. Giá trị trả về là số dấu phẩy động cho biết số giây kể từ kỷ nguyên (xem mô-đun time). Tăng OSError nếu tệp không tồn tại hoặc không thể truy cập được.

os.path.getmtime(path, /)

Trả về thời điểm sửa đổi lần cuối của path. Giá trị trả về là số dấu phẩy động cho biết số giây kể từ kỷ nguyên (xem mô-đun time). Tăng OSError nếu tệp không tồn tại hoặc không thể truy cập được.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.getctime(path, /)

Trả về thời gian của hệ thống, 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 path. Giá trị trả về là một số cho biết số giây kể từ kỷ nguyên (xem mô-đun time). Tăng OSError nếu tệp không tồn tại hoặc không thể truy cập được.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.getsize(path, /)

Trả về kích thước, tính bằng byte, của path. Tăng OSError nếu tệp không tồn tại hoặc không thể truy cập được.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.isabs(path, /)

Trả về True nếu path là 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 nó bắt đầu bằng hai dấu gạch chéo (phía sau) hoặc một ký tự ổ đĩa, dấu hai chấm và dấu gạch chéo (phía sau) cùng nhau.

Xem thêm

abspath()

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.13: Trên Windows, trả về False nếu đường dẫn đã cho bắt đầu bằng chính xác một dấu gạch chéo (trở lại).

os.path.isfile(path)

Trả về True nếu path là tệp existing thông thường. Điều này tuân theo các liên kết tượng trưng, ​​vì vậy cả islink()isfile() đều có thể đúng cho cùng một đường dẫn.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.isdir(path, /)

Trả về True nếu path là thư mục existing. Điều này tuân theo các liên kết tượng trưng, ​​vì vậy cả islink()isdir() đều có thể đúng cho cùng một đường dẫn.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.isjunction(path)

Trả về True nếu path đề cập đến mục nhập thư mục existing là một điểm nối. Luôn trả về False nếu các mối nối không được hỗ trợ trên nền tảng hiện tại.

Added in version 3.12.

Trả về True nếu path đề cập đến mục nhập thư mục existing là một liên kết tượng trưng. Luôn luôn False nếu các liên kết tượng trưng không được thời gian chạy Python hỗ trợ.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.ismount(path)

Trả về True nếu tên đường dẫn pathmount 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. Nó không thể phát hiện các liên kết gắn kết trên cùng một hệ thống tập tin một cách đáng tin cậy. Trên các hệ thống Linux, nó sẽ luôn trả về True cho các tập con btrfs, ngay cả khi chúng không phải là điểm gắn kết. Trên Windows, gốc ký tự ổ đĩa và chia sẻ UNC luôn là điểm gắn kết và đối với bất kỳ đường dẫn nào khác, GetVolumePathName được gọi để xem liệu nó có khác với đường dẫn đầu vào hay không.

Thay đổi trong phiên bản 3.4: Đã thêm hỗ trợ để phát hiện các điểm gắn kết không phải root trên Windows.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.isdevdrive(path)

Trả về True nếu tên đường dẫn path nằm trên Windows Dev Drive. Dev Drive được tối ưu hóa cho các kịch bản của nhà phát triển và mang lại hiệu suất đọc và ghi tệp nhanh hơn. Bạn nên sử dụng cho mã nguồn, thư mục bản dựng tạm thời, bộ đệm gói và các hoạt động sử dụng nhiều IO khác.

Có thể gây ra lỗi đối với đường dẫn không hợp lệ, chẳng hạn như đường dẫn không có ổ đĩa có thể nhận dạng được nhưng trả về False trên nền tảng không hỗ trợ Dev Drives. Xem the Windows documentation để biết thông tin về cách bật và tạo Dev Drives.

Added in version 3.12.

Thay đổi trong phiên bản 3.13: Chức năng này hiện có sẵn trên tất cả các nền tảng và sẽ luôn trả về False trên những nền tảng không hỗ trợ Dev Drives

os.path.isreserved(path)

Trả về True nếu path là tên đường dẫn dành riêng trên hệ thống hiện tại.

Trên Windows, tên tệp dành riêng bao gồm những tên kết thúc bằng dấu cách hoặc dấu chấm; những tệp chứa dấu hai chấm (tức là các luồng tệp chẳng hạn như "name:stream"), ký tự đại diện (tức là '*?"<>'), ký tự ống dẫn hoặc ký tự điều khiển ASCII; cũng như tên thiết bị DOS như "NUL", "CON", "CONIN$", "CONOUT$", "AUX", "PRN", "COM1" và "LPT1".

Ghi chú

Hàm này xấp xỉ các quy tắc dành cho đường dẫn dành riêng trên hầu hết các hệ thống Windows. Các quy tắc này thay đổi theo thời gian trong các bản phát hành Windows khác nhau. Chức năng này có thể được cập nhật trong các bản phát hành Python trong tương lai khi các thay đổi đối với quy tắc trở nên phổ biến rộng rãi.

sẵn có: Windows.

Added in version 3.13.

os.path.join(path, /, *paths)

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

Nếu một phân đoạn là một đường dẫn tuyệt đối (trên Windows yêu cầu cả ổ đĩa và root), thì tất cả các phân đoạn trước đó sẽ bị bỏ qua và việc nối tiếp tục từ phân đoạn đường dẫn tuyệt đối. Trên Linux, ví dụ:

>>> os.path.join('/home/foo', 'bar')
'/home/foo/bar'
>>> os.path.join('/home/foo', '/home/bar')
'/nhà/quán bar'

Trên Windows, ổ đĩa không được đặt lại khi gặp phải đoạn đường dẫn gốc (ví dụ: r'\foo'). Nếu một phân đoạn nằm trên một ổ đĩa khác hoặc là một đường dẫn tuyệt đối thì tất cả các phân đoạn trước đó sẽ bị bỏ qua và ổ đĩa sẽ được đặt lại. Ví dụ:

>>> os.path.join('c:\\', 'foo')
'c:\\foo'
>>> os.path.join('c:\\foo', 'd:\\bar')
'd:\\bar'

Lưu ý rằng vì có một thư mục hiện tại cho mỗi ổ đĩa nên os.path.join("c:", "foo") biểu thị một đường dẫn liên quan đến thư mục hiện tại trên ổ đĩa C: (c:foo), không phải c:\foo.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho pathpaths.

os.path.normcase(path, /)

Bình thường hóa trường hợp của 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, đồng thời chuyển đổi dấu gạch chéo tiến thành dấu gạch chéo ngược. Trên các hệ điều hành khác, trả về đường dẫn không thay đổi.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.normpath(path)

Chuẩn hóa tên đường dẫn bằng cách thu gọn các dấu phân cách dư thừa và các tham chiếu cấp cao hơn để A//B, A/B/, A/./BA/foo/../B đều trở thành A/B. Thao tác chuỗi này có thể thay đổi ý nghĩa của đườ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 tiến thành dấu gạch chéo ngược. Để bình thường hóa trường hợp, sử dụng normcase().

Ghi chú

Trên hệ thống POSIX, theo IEEE Std 1003.1 2013 Edition; 4.13 Pathname Resolution, nếu tên đường dẫn bắt đầu bằng chính xác hai dấu gạch chéo, thì thành phần đầu tiên theo sau các ký tự đầu tiên có thể được diễn giải theo cách được xác định khi triển khai, mặc dù nhiều hơn hai ký tự đầu sẽ được coi là một ký tự đơn.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.realpath(path, /, *, strict=False)

Trả về đường dẫn chuẩn của tên tệp đã 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ệ điều hành hỗ trợ). Trên Windows, chức năng này cũng sẽ phân giải các tên kiểu MS-DOS (còn gọi là 8.3), chẳng hạn như C:\\PROGRA~1 thành C:\\Program Files.

Theo mặc định, đường dẫn được đánh giá cho đến thành phần đầu tiên không tồn tại, là vòng lặp liên kết tượng trưng hoặc có đánh giá tăng OSError. Tất cả các thành phần như vậy được thêm vào phần hiện có của đường dẫn mà không thay đổi.

Một số lỗi được xử lý theo cách này bao gồm "quyền truy cập bị từ chối", "không phải thư mục" hoặc "đối số không hợp lệ đối với chức năng nội bộ". Do đó, đường dẫn kết quả có thể bị thiếu hoặc không thể truy cập được, vẫn có thể chứa các liên kết hoặc vòng lặp và có thể đi qua các thư mục không phải là thư mục.

Hành vi này có thể được sửa đổi bằng các đối số từ khóa:

Nếu strictTrue, lỗi đầu tiên gặp phải khi đánh giá đường dẫn sẽ xuất hiện lại. Đặc biệt, FileNotFoundError được nâng lên nếu path không tồn tại hoặc OSError khác nếu không thể truy cập được.

Nếu strictos.path.ALLOW_MISSING, các lỗi khác ngoài FileNotFoundError sẽ xuất hiện lại (như với strict=True). Do đó, đường dẫn trả về sẽ không chứa bất kỳ liên kết tượng trưng nào, nhưng tệp được đặt tên và một số thư mục mẹ của nó có thể bị thiếu.

Ghi chú

Hàm này mô phỏng quy trình của hệ điều hành để tạo một đường dẫn chuẩn, hơi khác một chút giữa Windows và UNIX về 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.

API hệ điều hành tạo đường dẫn chuẩn nếu cần, do đó, thông thường không cần thiết phải gọi hàm này.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

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ố strict đã được thêm vào.

Thay đổi trong phiên bản 3.14: Giá trị ALLOW_MISSING cho tham số strict đã được thêm vào.

os.path.ALLOW_MISSING

Giá trị đặc biệt được sử dụng cho đối số strict trong realpath().

Added in version 3.14.

os.path.relpath(path, start=os.curdir)

Trả về đường dẫn tệp tương đối cho path từ thư mục hiện tại hoặc từ thư mục start tùy chọn. Đây là 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 path hoặc start. Trên Windows, ValueError được nâng lên khi pathstart ở trên các ổ đĩa khác nhau.

start mặc định là os.curdir.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.samefile(path1, path2, /)

Trả về True nếu cả hai đối số tên đường dẫn đều tham chiếu đến 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ố i-node và đưa ra một ngoại lệ nếu lệnh gọi os.stat() 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.

Thay đổi trong phiên bản 3.4: Windows hiện sử dụng cách triển khai tương tự như tất cả các nền tảng khác.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.sameopenfile(fp1, fp2)

Trả về True nếu bộ mô tả tệp fp1fp2 tham chiếu đến cùng một tệp.

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

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.samestat(stat1, stat2, /)

Trả về True nếu bộ dữ liệu thống kê stat1stat2 tham chiếu đến cùng một tệp. Những cấu trúc này có thể được trả về bởi os.fstat(), os.lstat() hoặc os.stat(). Hàm này thực hiện so sánh cơ bản được sử dụng bởi samefile()sameopenfile().

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

os.path.split(path, /)

Chia tên đường dẫn path thành một cặp, (head, tail) trong đó tail là thành phần tên đường dẫn cuối cùng và head là mọi thứ dẫn đến điều đó. Phần tail sẽ không bao giờ chứa dấu gạch chéo; nếu path kết thúc bằng dấu gạch chéo, tail sẽ trống. Nếu không có dấu gạch chéo trong path thì head sẽ trống. Nếu path trống thì cả headtail đều trống. Dấu gạch chéo cuối bị loại bỏ khỏi head trừ khi nó là gốc (chỉ một hoặc nhiều dấu gạch chéo). Trong mọi trường hợp, join(head, tail) trả về đường dẫn đến cùng vị trí với path (nhưng các chuỗi có thể khác nhau). Xem thêm các chức năng join(), dirname()basename().

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.splitdrive(path, /)

Chia tên đường dẫn path thành một cặp (drive, tail) trong đó drive là điểm gắn kết hoặc chuỗi trống. Trên các hệ thống không sử dụng thông số kỹ thuật của ổ đĩa, drive sẽ luôn là chuỗi trống. Trong mọi trường hợp, drive + tail sẽ giống path.

Trên Windows, chia tên đường dẫn thành điểm chia sẻ drive/UNC và đường dẫn tương đối.

Nếu đường dẫn chứa ký tự ổ đĩa, ổ đĩa sẽ chứa mọi thứ cho đến và bao gồm cả dấu hai chấm

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

Nếu đường dẫn chứa đường dẫn UNC, ổ đĩa sẽ chứa tên máy chủ và chia sẻ:

>>> chia  ("//host/máy tính/dir")
("//máy chủ/máy tính", "/dir")

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.splitroot(path, /)

Chia tên đường dẫn path thành một bộ 3 mục (drive, root, tail) trong đó drive là tên thiết bị hoặc điểm gắn kết, root là một chuỗi các dấu phân cách sau ổ đĩa và tail là mọi thứ sau root. Bất kỳ mục nào trong số này có thể là chuỗi trống. Trong mọi trường hợp, drive + root + tail sẽ giống path.

Trên hệ thống POSIX, drive luôn trống. root có thể trống (nếu path là tương đối), một dấu gạch chéo lên (nếu path là tuyệt đối) hoặc hai dấu gạch chéo lên (do việc triển khai được xác định cho mỗi IEEE Std 1003.1-2017; 4.13 Pathname Resolution.) Ví dụ:

>>> Splitroot('/home/sam')
('', '/', 'nhà/sam')
>>>splitroot('//home/sam')
('', '//', 'nhà/sam')
>>>splitroot('///home/sam')
('', '/', '//home/sam')

Trên Windows, drive có thể trống, tên ký tự ổ đĩa, phần chia sẻ UNC hoặc tên thiết bị. Zz001zz có thể trống, dấu gạch chéo tiến hoặc dấu gạch chéo ngược. Ví dụ:

>>> Splitroot('C:/Users/Sam')
('C:', '/', 'Người dùng/Sam')
>>> Splitroot('//Server/Share/Users/Sam')
('//Máy chủ/Chia sẻ', '/', 'Người dùng/Sam')

Added in version 3.12.

os.path.splitext(path, /)

Chia tên đường dẫn path thành một cặp (root, ext) sao cho root + ext == path và phần mở rộng ext trống hoặc bắt đầu bằng một dấu chấm và chứa nhiều nhất một dấu chấm.

Nếu đường dẫn không chứa phần mở rộng, ext sẽ là '':

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

Nếu đường dẫn chứa phần mở rộng thì ext sẽ được đặt thành phần mở rộng này, bao gồm cả dấu chấm ở đầu. Lưu ý rằng các khoảng thời gian 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 dẫn đầ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', '')

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.path.supports_unicode_filenames

True nếu các chuỗi Unicode tùy ý có thể được sử dụng làm tên tệp (trong giới hạn do hệ thống tệp áp đặt).