Có cách nào để tôi có thể sử dụng tên miền trên một thư mục, để lấy các tệp có phần mở rộng cụ thể, nhưng chỉ có tên tệp, không phải toàn bộ đường dẫn?
Có cách nào để tôi có thể sử dụng tên miền trên một thư mục, để lấy các tệp có phần mở rộng cụ thể, nhưng chỉ có tên tệp, không phải toàn bộ đường dẫn?
Câu trả lời:
Điều này có thể giúp ai đó:
names = [os.path.basename(x) for x in glob.glob('/your_path')]
map(os.path.basename, glob.glob("your/path"))
Trả về một tệp có thể lặp lại với tất cả tên tệp và phần mở rộng.
os.path.basename phù hợp với tôi.
Đây là ví dụ về Mã:
import sys,glob
import os
expectedDir = sys.argv[1] ## User input for directory where files to search
for fileName_relative in glob.glob(expectedDir+"**/*.txt",recursive=True): ## first get full file name with directores using for loop
print("Full file name with directories: ", fileName_relative)
fileName_absolute = os.path.basename(fileName_relative) ## Now get the file name with os.path.basename
print("Only file name: ", fileName_absolute)
Đầu ra:
Full file name with directories: C:\Users\erinksh\PycharmProjects\EMM_Test2\venv\Lib\site-packages\wheel-0.33.6.dist-info\top_level.txt
Only file name: top_level.txt
Tôi tiếp tục viết lại giải pháp cho sự hiển thị tương đối (đặc biệt là khi tôi cần thêm các mục vào tệp zip) - đây là những gì nó thường trông như thế nào.
# Function
def rel_glob(pattern, rel):
"""glob.glob but with relative path
"""
for v in glob.glob(os.path.join(rel, pattern)):
yield v[len(rel):].lstrip("/")
# Use
# For example, when you have files like: 'dir1/dir2/*.py'
for p in rel_glob("dir2/*.py", "dir1"):
# do work
pass
Nếu bạn đang tìm kiếm tệp CSV:
file = [os.path.basename(x) for x in glob.glob(r'C:\Users\rajat.prakash\Downloads//' + '*.csv')]
Nếu bạn đang tìm kiếm tệp EXCEL:
file = [os.path.basename(x) for x in glob.glob(r'C:\Users\rajat.prakash\Downloads//' + '*.xlsx')]