Làm cách nào để tìm tên tệp từ đường dẫn trong Python?

Đường dẫn tệp là một chuỗi xác định duy nhất vị trí của tệp trên hệ thống tệp. Đôi khi bạn có thể cần truy xuất hoặc trích xuất tên tệp từ đường dẫn tệp trong python. Có nhiều cách khác nhau để làm con trăn này. Trong bài viết này, chúng ta sẽ xem cách lấy tên tệp từ đường dẫn trong python


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

Chúng tôi sẽ xem xét các cách khác nhau để lấy tên tệp từ đường dẫn trong python. Chúng tôi sẽ sử dụng hệ điều hành. thư viện đường dẫn và đường dẫn cho mục đích này


1. Sử dụng hệ điều hành. con đường. basename

Bạn có thể dễ dàng lấy tên tệp bằng os. con đường. chức năng tên cơ sở. Nó sẽ trả về tên tệp có phần mở rộng. Phương pháp này hoạt động với hầu hết mọi phiên bản python

Trong Windows

>>> import os
>>> fpath='c:\Project\data.txt'

>>> os.path.basename(fpath)
'data.txt'

Trong Linux

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'

Xin lưu ý, đường dẫn tệp trong Windows chứa dấu gạch chéo ngược trong khi đường dẫn trong Linux chứa dấu gạch chéo lên. Tuy nhiên, trong cả hai trường hợp, python sẽ phân tích chính xác đường dẫn tệp và trả về tên tệp

Nếu bạn không muốn phần mở rộng tệp mà chỉ muốn tên tệp, hãy sử dụng os. con đường. hàm splitext để tách riêng tên tệp và phần mở rộng thành một mảng. Sử dụng chỉ mục 0 để lấy tên tệp không có phần mở rộng. Dưới đây là các ví dụ trên với os. con đường. splitext

Trong Windows

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data

Trong Linux

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data

Nếu bạn chỉ muốn trích xuất tên tệp từ đường dẫn, không có phần mở rộng, trước tiên bạn cần sử dụng os. con đường. tên cơ sở để lấy tên tệp có phần mở rộng, sau đó sử dụng os. con đường. splitext tách tên tệp khỏi phần mở rộng. Nếu bạn gọi trực tiếp os. con đường. splitext trên filepath, sau đó nó sẽ tách phần mở rộng khỏi filepath mà không cần giải nén tên tệp. Đây là một ví dụ về nó

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

Xin lưu ý, phương thức splitext sẽ chỉ tách phần mở rộng cuối cùng. Ví dụ: nếu tên tệp của bạn là dữ liệu. hắc ín. gz thì splitext sẽ trả về dữ liệu. tar, thay vì trả lại dữ liệu. Trong trường hợp tên tệp của bạn có nhiều phần mở rộng và bạn chỉ muốn lấy tên tệp thì bạn cần chuyển đầu ra của hàm splitext này sang hàm splitext khác

>>> fpath="/home/ubuntu/data.tar.gz"
>>> import os
>>> base=os.path.basename(fpath)
>>> base
data.tar.gz
>>> fname=os.path.splitext(base)[0]
data.tar
>>> fname =os.path.splitext(fname)[0]
data


2. Sử dụng đường dẫn

Bắt đầu với python 3, bạn cũng có thể sử dụng thư viện pathlib để dễ dàng trích xuất tên tệp từ đường dẫn. Trên thực tế, nó có sẵn như một phần của thư viện chuẩn bắt đầu từ python 3. 4. Đây là một ví dụ

Trong Windows

>>> from pathlib import Path
>>> fpath='c:\Project\data.txt'
>>> Path(fpath).stem
data

Trong Linux

>>> from pathlib import Path
>>> fpath="/home/ubuntu/data.txt"
>>> Path(fpath).stem
data

Xin lưu ý, các. gốc ở trên sẽ chỉ xóa phần mở rộng cuối cùng. Ví dụ: nếu tên tệp của bạn là dữ liệu. hắc ín. gz, sau đó. gốc sẽ trả về dữ liệu. hắc ín

Trong những trường hợp như vậy, bạn phải chuyển đầu ra của một câu lệnh Đường dẫn sang câu lệnh Đường dẫn khác

________số 8

Trong bài viết này, chúng tôi đã xem xét hai cách khác nhau để lấy tên tệp từ đường dẫn trong python. Chúng đều hữu ích và thích ứng tốt với các đường dẫn kiểu Windows cũng như các đường dẫn kiểu Linux

Cả hai hệ điều hành. đường dẫn và đường dẫn cung cấp các chức năng hữu ích để lấy tên tệp từ đường dẫn. hệ điều hành. đường dẫn hoạt động trên tất cả các phiên bản Python trong khi đường dẫn có sẵn trong python 3+. Trên thực tế, nó được tạo ra một cách rõ ràng để hoạt động với đường dẫn tệp và đường dẫn thư mục. Tuy nhiên, nếu tên tệp của bạn chứa nhiều phần mở rộng, bạn sẽ phải tách nó nhiều lần để chỉ trích xuất tên tệp. Tuy nhiên, bạn có thể sử dụng một trong hai tùy thuộc vào yêu cầu của bạn

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

>>> splitdrive("c:/dir")
("c:", "/dir")
9 và để truy cập hệ thống tệp, hãy xem mô-đun
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
00. 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
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
01

Không giống như Unix shell, 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ư

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

Xem thêm

Mô-đun

>>> splitdrive("c:/dir")
("c:", "/dir")
3 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 một đường dẫn hoặc tên tệp được trả về

Ghi chú

Vì các hệ điều hành khác nhau có các quy ước về 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

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
02 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 muốn thao tác với một đường dẫn luôn ở một trong các định dạng khác nhau. Tất cả đều có giao diện giống nhau

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

  • >>> splitdrive("c:/dir")
    ("c:", "/dir")
    
    6 cho đường dẫn Windows

Đã thay đổi trong phiên bản 3. 8.

>>> splitdrive("c:/dir")
("c:", "/dir")
7,
>>> splitdrive("c:/dir")
("c:", "/dir")
8,
>>> splitdrive("c:/dir")
("c:", "/dir")
9,
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
80,
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
81, và
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
82 hiện trả về
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
83 thay vì đưa ra một ngoại lệ cho các đường dẫn chứa các ký tự hoặc byte không thể biểu diễn ở cấp hệ điều hành.

os. con đường. đường abs(đường dẫn)

Trả về phiên bản chuẩn hóa tuyệt đối của đường dẫn tê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

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
84 như sau.
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
85

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. tên cơ sở(đường dẫn)

Trả lại tên cơ sở của đường dẫn tê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 tới hàm

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
86. Lưu ý rằng kết quả của hàm này khác với chương trình tên cơ sở Unix;

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. đường dẫn chung(đường dẫn)

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

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
81 nếu đường dẫn chứa cả tên đường dẫn tuyệt đối và tương đối, đườ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ư
>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
82, điều này trả về một đường dẫn hợp lệ

Tính khả dụng . Hệ điều hành Unix, Windows.

Mới trong phiên bản 3. 5

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một chuỗi đối tượng dạng đường dẫn .

os. con đường. tiền tố chung(danh sách)

Trả về tiền tố đường dẫn dài nhất (lấy theo từng ký tự) là tiền tố của tất cả các đường dẫn trong danh sách. Nếu danh sách trống, trả về chuỗi rỗng (______280)

Ghi chú

Hàm này có thể trả về các đường dẫn không hợp lệ vì nó hoạt động một ký tự tại một thời điểm. Để có được một đường dẫn hợp lệ, xem

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
84

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
3

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. tên thư mục(đường dẫn)

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

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
86

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. tồn tại(đường dẫn)

Trả lại

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu đường dẫn đề cập đến đường dẫn hiện có hoặc bộ mô tả tệp đang mở. Trả về
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
83 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ề
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
83 nếu quyền không được cấp để thực thi
>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
89 trên tệp được yêu cầu, ngay cả khi đường dẫn thực sự tồn tại

Đã thay đổi trong phiên bản 3. 3. path bây giờ có thể là một số nguyên.

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 được trả về nếu nó là bộ mô tả tệp đang mở, ngược lại là
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
83.

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. từ vựng(đường dẫn)

Trả lại

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu đường dẫn đề cập đến một đường dẫn hiện có. Trả về
>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 cho các liên kết tượng trưng bị hỏng. Tương đương với
>>> splitdrive("c:/dir")
("c:", "/dir")
7 trên nền tảng thiếu
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

45

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. trình mở rộng(đường dẫn)

Trên Unix và Windows, trả về đối số có thành phần ban đầu là

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

46 hoặc
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

47 được thay thế bằng thư mục chính của người dùng đó

Trên Unix, một

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

46 ban đầu được thay thế bằng biến môi trường
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

49 nếu nó được đặt; . Một
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

47 ban đầu được tra cứu trực tiếp trong thư mục mật khẩu

Trên Windows,

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

92 sẽ được sử dụng nếu được đặt, nếu không, sự kết hợp giữa
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

93 và
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

94 sẽ được sử dụng. Một
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

47 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 chính của người dùng hiện tại có khớp với
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

96 hay không và thay thế nó nếu có

Nếu 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 được trả về không thay đổi

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

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

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

49 trên Windows.

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

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

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

98 hoặc
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

99 được thay thế bằng giá trị của tên biến môi trường. 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 của

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
020 được hỗ trợ ngoài
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

98 và
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

99

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

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

Trả về thời gian truy cập cuối cùng của đường dẫn. Giá trị trả về là một số dấu phẩy động cho biết số giây kể từ kỷ nguyên (xem mô-đun

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
023). Tăng
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
024 nếu tệp không tồn tại hoặc không thể truy cập được

os. con đường. getmtime(đường dẫn)

Trả về thời gian sửa đổi cuối cùng của đường dẫn. Giá trị trả về là một số dấu phẩy động cho biết số giây kể từ kỷ nguyên (xem mô-đun

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
023). Tăng
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
024 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 một đối tượng giống đường dẫn .

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

Trả về ctime 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 đường dẫn. Giá trị trả về là một số cho biết số giây kể từ kỷ nguyên (xem mô-đun

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
023). Tăng
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
024 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 một đối tượng giống đường dẫn .

os. con đường. getsize(đường dẫn)

Trả về kích thước, tính bằng byte, của đường dẫn. Tăng

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
024 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 một đối tượng giống đường dẫn .

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

Trả lại

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu đường dẫn là tên đường dẫn tuyệt đối. Trên Unix, điều đó có nghĩa là nó bắt đầu bằng dấu gạch chéo, trên Windows, nó bắt đầu bằng dấu gạch chéo (quay lại) sau khi cắt bỏ ký tự ổ đĩa tiềm năng

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

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

Trả lại

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu đường dẫn là tệp thông thường
>>> splitdrive("c:/dir")
("c:", "/dir")
92. Điều này tuân theo các liên kết tượng trưng, ​​vì vậy cả
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
81 và
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
80 đều có thể đúng với cùng một đường dẫn

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

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

Trả về

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu đường dẫn là thư mục
>>> splitdrive("c:/dir")
("c:", "/dir")
92. Điều này tuân theo các liên kết tượng trưng, ​​vì vậy cả
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
81 và
>>> splitdrive("c:/dir")
("c:", "/dir")
9 đều có thể đúng với cùng một đường dẫn

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

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

Trả lại

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu đường dẫn đề cập đến một mục nhập thư mục
>>> splitdrive("c:/dir")
("c:", "/dir")
92 là một liên kết tượng trưng. Luôn luôn
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
83 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 một đối tượng giống đường dẫn .

os. con đường. ismount(đường dẫn)

Trả lại

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu đường dẫn tên đường dẫn là điểm gắn kết. một điểm trong hệ thống tệp nơi một hệ thống tệp khác đã được gắn kết. Trên POSIX, chức năng này kiểm tra xem cha của đường dẫn,
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
003, có nằm trên một thiết bị khác với đường dẫn hay không hoặc liệu
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
003 và đường dẫn 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 một cách đáng tin cậy trên cùng một hệ thống tệp. Trên Windows, một ký tự gốc của ổ đĩa và một UNC chia sẻ luôn là các điểm gắn kết và đối với bất kỳ đường dẫn nào khác,
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
005 được gọi để xem liệu 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 kết không phải root trên Windows.

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. tham gia(đường dẫn , *đường dẫn)

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à nối của đường dẫn và bất kỳ thành viên nào của *đường dẫn có chính xác một dấu tách thư mục theo sau mỗi phần không trống 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. 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ị loại bỏ và việc nối 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 một thành phần đường dẫn tuyệt đối (e. g. ,

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
006) gặp phải. Nếu một thành phần chứa ký tự ổ đĩa, tất cả các thành phần trước đó sẽ bị loại bỏ 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, nên
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
007 đại diện cho một đường dẫn liên quan đến thư mục hiện tại trên ổ đĩa
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
008 (
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
009), không phải
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
010

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn cho đường dẫn và các đường dẫn.

os. con đường. trường hợp chuẩn(đường dẫn)

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

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. đường chuẩn(đường dẫn)

Bình thường 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 để tất cả

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
011,
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
012,
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
013 và
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
014 đều trở thành
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
015. 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 xuôi thành dấu gạch chéo ngược. Để bình thường hóa trường hợp, sử dụng
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
016

Ghi chú

Trên hệ thống POSIX, phù hợp với IEEE Std 1003. 1 Phiên bản 2013; . 13 Độ phân giải tên đường dẫn, nếu 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 sau các ký tự đầu có thể được diễn giải theo cách do triển khai xác định, mặc dù nhiều hơn hai ký tự đầu sẽ được coi là một ký tự

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. đường dẫn thực(đường dẫn , * , nghiêm ngặt=Sai)

Trả về đường dẫn chính tắc 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ợ)

Nếu một đườ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à nghiêm ngặt là

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86, thì
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
024 được nâng lên. Nếu nghiêm ngặt là
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
83, đường dẫn được giải quyết càng nhiều càng tốt và mọi phần còn lại được thêm vào mà không cần kiểm tra xem nó có tồn tại không

Ghi chú

Chức năng này mô phỏng quy trình của hệ điều hành để tạo một đường dẫn chuẩn, 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 khi cần, vì vậy thông thường không cần thiết phải gọi chức năng này

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

Đã thay đổi trong phiên bản 3. 8. Các liên kết và nút giao tượng trưng hiện đã được xử lý trên Windows.

Đã thay đổi trong phiên bản 3. 10. Tham số nghiêm ngặt đã được thêm vào.

os. con đường. đường dẫn(đường dẫn , bắt đầu=os. sữa chua)

Trả lại đường dẫn tệp tương đối về đườ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,

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
81 được nâng lên khi đường dẫn và bắt đầu nằm trên các ổ đĩa khác nhau

bắt đầu mặc định để

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

Tính khả dụng . Hệ điều hành Unix, Windows.

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. samefile(đường dẫn1 , path2)

Trả về

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu cả hai đối số tên đường dẫn đề cập đế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
>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
89 trên một trong hai tên đường dẫn không thành công

Tính khả dụng . Hệ điều hành Unix, Windows.

Đã 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 giống 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 một đối tượng giống đường dẫn .

os. con đường. sameopenfile(fp1 , fp2)

Trả về

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu bộ mô tả tệp fp1 và fp2 đề cập đến cùng một tệp

Tính khả dụng . Hệ điều hành Unix, Windows.

Đã 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 một đối tượng giống đường dẫn .

os. con đường. samestat(stat1 , stat2)

Trả về

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 nếu bộ dữ liệu thống kê stat1 và stat2 đề cập đến cùng một tệp. Những cấu trúc này có thể đã được trả về bởi
>>> splitdrive("c:/dir")
("c:", "/dir")
06,
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

45 hoặc
>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
89. Hàm này thực hiện so sánh cơ bản được sử dụng bởi
>>> splitdrive("c:/dir")
("c:", "/dir")
09 và
>>> splitdrive("c:/dir")
("c:", "/dir")
10

Tính khả dụng . Hệ điều hành Unix, Windows.

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

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. tách(đường dẫn)

Tách đường dẫn tên đường dẫn thành một cặp,

>>> splitdrive("c:/dir")
("c:", "/dir")
11 trong đó đuôi là thành phần tên đường dẫn cuối cùng và đầu là mọi thứ dẫn đến đó. Phần đuôi sẽ không bao giờ có dấu gạch chéo; . Nếu không có dấu gạch chéo trong đường dẫn, phần đầu sẽ trống. Nếu đường dẫn trống, cả đầu và đuôi đều trống. Dấu gạch chéo bị loại bỏ khỏi đầu 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,
>>> splitdrive("c:/dir")
("c:", "/dir")
12 trả về một đường dẫn đến cùng một vị trí với đường dẫn (nhưng các chuỗi có thể khác nhau). Xem thêm các chức năng
>>> splitdrive("c:/dir")
("c:", "/dir")
13 và
>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
89

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. ổ đĩa chia(đường dẫn)

Tách đường dẫn tên đường dẫn thành một cặp

>>> splitdrive("c:/dir")
("c:", "/dir")
15 trong đó ổ đĩa 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ố ổ đĩa, ổ đĩa sẽ luôn là chuỗi rỗng. Trong mọi trường hợp,
>>> splitdrive("c:/dir")
("c:", "/dir")
16 sẽ giống như đường dẫn

Trên Windows, chia tên đường dẫn thành ổ đĩa/UNC sharepoint 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

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

Nếu đường dẫn chứa đường dẫn UNC, ổ đĩa sẽ chứa tên máy chủ lưu trữ và chia sẻ, tối đa nhưng không bao gồm dấu phân cách thứ tư

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> os.path.basename(fpath)
'data.txt'
8

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. splitext(đường dẫn)

Tách đường dẫn tên đường dẫn thành một cặp

>>> splitdrive("c:/dir")
("c:", "/dir")
17 sao cho
>>> splitdrive("c:/dir")
("c:", "/dir")
18 và phần mở rộng, ext, trống hoặc bắt đầu bằng 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, phần mở rộng sẽ là

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
80

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
8

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

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

4

Các giai đoạ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

>>> fpath="/home/ubuntu/data.txt"
>>> import os
>>> fname=os.path.splitext(fpath)[0]
>>> /home/ubuntu/data

9

Đã thay đổi trong phiên bản 3. 6. Chấp nhận một đối tượng giống đường dẫn .

os. con đường. supports_unicode_filenames

>>> import os
>>> fpath='c:\Project\data.txt'
>>> base=os.path.basename(fpath)
>>> print base
data.txt
>>> fname=os.path.splitext(base)[0]
>>> data
86 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)

Đường dẫn (__ tệp __) trong Python là gì?

Trong Python a. tệp py là một mô-đun. Vì vậy, nhập amodule sẽ có thuộc tính __file__ có nghĩa là những thứ khác nhau trong các trường hợp khác nhau. Lấy từ các tài liệu. __file__ là tên đường dẫn của tệp mà mô-đun được tải từ đó, nếu nó được tải từ một tệp .

Đường dẫn có bao gồm tên tệp không?

Tên đường dẫn có thể dài tối đa 1023 ký tự, bao gồm tất cả tên thư mục, tên tệp và dấu gạch chéo phân tách.