Python có thể tìm kiếm tên tệp trong một đường dẫn được chỉ định của HĐH. Điều này có thể được thực hiện bằng cách sử dụng module os với các hàm walk[]. Điều này sẽ lấy một đường dẫn cụ thể làm đầu vào và tạo 3-tuple liên quan đến dirpath, dirnames và filenames
Trong ví dụ dưới đây, chúng tôi đang tìm kiếm một tệp có tên smpl. htm bắt đầu từ thư mục gốc có tên “D. \”. hệ điều hành. walk[] tìm kiếm toàn bộ thư mục và từng thư mục con của nó để định vị tệp này. Kết quả là chúng ta thấy rằng tệp có trong cả thư mục chính và cả trong thư mục con. Chúng tôi đang chạy chương trình này trong hệ điều hành windows
Ví dụ
import os def find_files[filename, search_path]: result = [] # Wlaking top-down from the root for root, dir, files in os.walk[search_path]: if filename in files: result.append[os.path.join[root, filename]] return result print[find_files["smpl.htm","D:"]]
đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']
Trong Python, bạn có thể lấy tên tệp [tên cơ sở], tên thư mục [thư mục] và phần mở rộng từ chuỗi đường dẫn hoặc nối các chuỗi để tạo chuỗi đường dẫn với mô-đun
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
3 trong thư viện chuẩn- hệ điều hành. đường dẫn — Thao tác tên đường dẫn phổ biến — Python 3. 9. tài liệu 1rc1
Bài viết này mô tả các nội dung sau
- Sự khác biệt trong dấu phân cách đường dẫn của hệ điều hành
- Lấy tên tệp [tên cơ sở] từ một đường dẫn.
4basename = os.path.basename[filepath] print[basename] # filename.ext print[type[basename]] #
- Tên tệp có phần mở rộng
- Tên tệp không có phần mở rộng
- Lấy tên thư mục [thư mục] từ một đường dẫn.
5basename = os.path.basename[filepath] print[basename] # filename.ext print[type[basename]] #
- Lấy cặp tên tệp và thư mục.
6basename = os.path.basename[filepath] print[basename] # filename.ext print[type[basename]] #
- Lưu ý khi một chuỗi đường dẫn chỉ ra một thư mục
- Nhận phần mở rộng.
7basename = os.path.basename[filepath] print[basename] # filename.ext print[type[basename]] #
- Tạo chuỗi đường dẫn có phần mở rộng khác
- Lấy phần mở rộng không có dấu chấm [dấu chấm]
- Ví dụ về các trường hợp như
8basename = os.path.basename[filepath] print[basename] # filename.ext print[type[basename]] #
- Tạo chuỗi đường dẫn bằng cách kết hợp tên tệp và thư mục.
9basename = os.path.basename[filepath] print[basename] # filename.ext print[type[basename]] #
- Tạo một chuỗi đường dẫn cho một tệp khác trong cùng thư mục
- Sử dụng các định dạng hệ điều hành khác nhau
- Ví dụ cho Windows
- Dấu gạch chéo ngược và chuỗi thô
- Ví dụ về lấy tên tệp, tên thư mục, phần mở rộng
- Nhận và tham gia một ký tự ổ đĩa.
0basename_without_ext = os.path.splitext[os.path.basename[filepath]][0] print[basename_without_ext] # filename
Sử dụng chuỗi đường dẫn sau làm ví dụ
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']0
nguồn.
Mã mẫu bên dưới đang chạy trên máy Mac. Ví dụ cho Windows được hiển thị ở cuối
Trong Trăn 3. 4 trở lên, bạn cũng có thể lấy tên tệp, tên thư mục [thư mục], phần mở rộng, v.v. , với mô-đun pathlib coi đường dẫn là đối tượng
- pathlib — Đường dẫn hệ thống tệp hướng đối tượng — Python 3. 9. tài liệu 1rc1
Liên kết được tài trợ
Sự khác biệt trong dấu phân cách đường dẫn của hệ điều hành
Dấu tách đường dẫn phụ thuộc vào hệ điều hành. UNIX [bao gồm Mac] sử dụng dấu gạch chéo
basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
1 và Windows sử dụng dấu gạch chéo ngược basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
2 làm dấu phân cáchBạn có thể lấy dấu tách trong HĐH chạy Python với
basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
3 hoặc basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
4['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']5
nguồn.
Lấy tên tệp [tên cơ sở] từ một đường dẫn. basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
4
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
Sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
4 để lấy tên tệp [tên cơ sở] từ chuỗi đường dẫnTên tệp có phần mở rộng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
4 trả về tên tệp có phần mở rộng['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']9
nguồn.
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
nguồn.
Tên tệp không có phần mở rộng
Bạn có thể lấy tên tệp mà không cần phần mở rộng với
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
7 được mô tả saubasename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
nguồn.
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
7 tách ở dấu chấm cuối cùng [bên phải] basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
40. Nếu bạn muốn chia theo dấu chấm đầu tiên [bên trái] basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
40, hãy sử dụng basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
42- Tách chuỗi trong Python [dấu phân cách, ngắt dòng, regex, v.v. ]
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
4nguồn.
Lấy tên thư mục [thư mục] từ một đường dẫn. basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
5
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
Sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
5 để lấy thư mục thư mục [tên] từ một chuỗi đường dẫn['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']9
nguồn.
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
1nguồn.
Nếu bạn chỉ muốn lấy tên thư mục ngay phía trên tệp, hãy sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
4basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
3nguồn.
Lấy cặp tên tệp và thư mục. basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
6
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
Sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
6 để lấy cả tên tệp và thư mục [thư mục]basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
6 trả về một bộ tên tệp được trả về bởi basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
4 và tên thư mục được trả về bởi basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
5['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']9
nguồn.
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']50
nguồn.
Bạn có thể giải nén tuple để gán cho từng biến
- Giải nén một bộ và liệt kê trong Python
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']51
nguồn.
Sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
9 được mô tả sau để nối lại tên tệp và thư mụcLưu ý khi một chuỗi đường dẫn chỉ ra một thư mục
Lưu ý rằng nếu chuỗi đường dẫn chỉ ra một thư mục [thư mục] thì kết quả sẽ khác tùy thuộc vào việc có dấu phân cách ở cuối hay không
Không có dấu phân cách ở cuối
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']52
nguồn.
Nếu có dấu phân cách ở cuối, hãy sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
5 và basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
4 để lấy tên thư mục dưới cùng['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']53
nguồn.
Liên kết được tài trợ
Nhận phần mở rộng. basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
7
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
Sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
7 để nhận tiện ích mở rộngbasename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
7 tách phần mở rộng và phần mở rộng khác rồi trả về dưới dạng một bộ. Phần mở rộng chứa dấu chấm basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
40['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']9
nguồn.
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']55
nguồn.
Nối với toán tử
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']98 trả về chuỗi đường dẫn ban đầu
- Nối các chuỗi trong Python [toán tử +, nối, v.v. ]
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']56
nguồn.
Tạo chuỗi đường dẫn có phần mở rộng khác
Để tạo một chuỗi đường dẫn chỉ có phần mở rộng được thay đổi so với phần gốc, hãy nối phần tử đầu tiên của bộ dữ liệu được trả về bởi
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
7 với bất kỳ phần mở rộng nào['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']57
nguồn.
Lấy phần mở rộng không có dấu chấm [dấu chấm]
Nếu bạn muốn lấy phần mở rộng không có dấu chấm [dấu chấm]
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
40, hãy chỉ định chuỗi thứ hai và chuỗi tiếp theo với lát cắt basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
11- Cách cắt danh sách, chuỗi, tuple trong Python
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']58
nguồn.
Ví dụ về các trường hợp như basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
8
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
Như thể hiện trong ví dụ trên,
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
7 tách ra ở dấu chấm cuối cùng [bên phải] basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
40. Hãy cẩn thận với các tiện ích mở rộng như basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
8['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']59
nguồn.
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']90
nguồn.
Nếu bạn muốn chia theo dấu chấm đầu tiên [bên trái]
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
40 trong tên tệp, hãy sử dụng phương thức basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
42 của chuỗi, nhưng nó không hoạt động nếu tên thư mục cũng chứa dấu chấmbasename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
40['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']91
nguồn.
Sau khi tách với
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
6, hãy áp dụng phương pháp basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
42 của chuỗi và nối với basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
9 được mô tả sauChuỗi được trả về bởi
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
42 không chứa dấu phân cách, vì vậy hãy cẩn thận nếu bạn muốn nhận phần mở rộng có dấu chấm basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
40 như basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
7['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']92
nguồn.
Tạo chuỗi đường dẫn bằng cách kết hợp tên tệp và thư mục. basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
9
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
Sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
9 để nối tên tệp và thư mục để tạo chuỗi đường dẫn mới['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']93
nguồn.
Tạo một chuỗi đường dẫn cho một tệp khác trong cùng thư mục
Nếu bạn muốn tạo một chuỗi đường dẫn cho một tệp khác trong cùng thư mục của một tệp, hãy sử dụng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
5 và basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
9['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']9
nguồn.
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']95
nguồn.
Sử dụng các định dạng hệ điều hành khác nhau
Nếu bạn muốn thao tác chuỗi đường dẫn ở định dạng HĐH không phải là HĐH mà Python hiện đang chạy, hãy nhập và sử dụng các mô-đun khác thay vì mô-đun
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
39- UNIX [bao gồm cả máy Mac hiện tại].
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']
90 - các cửa sổ.
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']
91 - Macintosh 9 trở về trước.
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']
92
Vì mỗi mô-đun có giao diện giống như
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
3, nên bạn có thể thay đổi phần basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
3 của mã mẫu thành tên mô-đun của chúng [chẳng hạn như ['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']91]
Ví dụ cho Windows
Mã mẫu bên dưới đang chạy trên Mac bằng mô-đun
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']91 được đề cập ở trên. Khi chạy trên Windows, bạn có thể thay thế
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']91 bằng
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
3Dấu gạch chéo ngược và chuỗi thô
Dấu phân cách đường dẫn trong Windows là dấu gạch chéo ngược
basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
2Để viết dấu gạch chéo ngược trong một chuỗi, bạn cần viết hai dấu gạch chéo ngược để thoát.
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']500 xuất ra một dấu gạch chéo ngược
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']96
nguồn.
Chuỗi thô [
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']501] giúp viết đường dẫn Windows dễ dàng hơn vì bạn có thể viết dấu gạch chéo ngược. Một chuỗi thô và một chuỗi bình thường có giá trị bằng nhau
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']97
nguồn.
Để biết thêm thông tin về chuỗi thô, hãy xem bài viết sau
- Chuỗi thô trong Python
Ví dụ lấy tên tệp, tên thư mục, phần mở rộng
Nó cũng hoạt động trên Windows
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']98
nguồn.
Nhận và tham gia một ký tự ổ đĩa. basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
0
basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
Sử dụng
basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
0 để lấy ký tự ổ đĩa. Mã mẫu bên dưới sử dụng ['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']504
basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
0 tách ký tự ổ đĩa bao gồm cả dấu hai chấm ['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']506 và những ký tự khác
['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']99
nguồn.
Nếu chỉ muốn lấy ký tự ổ đĩa thì chọn ký tự đầu tiên
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
0nguồn.
Hãy cẩn thận khi tham gia các ký tự ổ đĩa
Nếu bạn chuyển nó cho
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
9 như hiện tại, nó sẽ không hoạt độngbasename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
1nguồn.
Bạn cũng có thể chỉ định
basename_without_ext = os.path.splitext[os.path.basename[filepath]][0]
print[basename_without_ext]
# filename
3 [['D:TP\smpl.htm', 'D:TP\spyder_pythons\smpl.htm']509 trong mã mẫu] trong đối số của
basename = os.path.basename[filepath]
print[basename]
# filename.ext
print[type[basename]]
#
9 hoặc thêm dấu phân cách vào ký tự ổ đĩa