Làm thế nào để bạn có được một tệp cụ thể trong một thư mục trong python?
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 Show
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 raChạ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 3 trong thư viện chuẩn
Bài viết này mô tả các nội dung sau
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
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ànhDấ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 1 và Windows sử dụng dấu gạch chéo ngược 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 3 hoặc 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))
# |