所以从我之前发过的帖子中我发现以下代码可以工作:
b = os.walk('C:\\Users\\USER\\Desktop\\FOLDER')
f = []
for(dirpath, dirnames, filenames) in b:
f.extend(os.path.splitext(name)[0] for name in filenames)
break
但是,现在我希望此列表只返回某种类型的文件,例如只有.JPEG或.GIF文件(仍然没有扩展名)。
我已经尝试过使用fnmatch,但它没有用。
评论后我将代码更改为:
b = os.walk('C:\\Users\\USER\\Desktop\\FOLDER')
os.listdir('C:\\Users\\USER\\Desktop\\FOLDER')
f = []
for(dirpath, dirnames, filenames) in b:
f.extend(os.path.splitext(name)[0] for name in filenames if name.lower().endswith((".jpeg", ".gif")))
def save_to_file(text):
for name in f:
with open('C:\\Users\\USER\\Desktop\\FOLDER\\test.txt', mode='wt', encoding='utf-8') as myfile:
myfile.write('\n'.join(text))
myfile.write('\n')
save_to_file(f)
答案 0 :(得分:1)
您可以使用 str.endswith 传递扩展元组:
f.extend((os.path.splitext(name)[0] for name in filenames if name.lower().endswith((".jpeg", ".gif")))
我不确定为什么你的for循环中有一个 break ,因为这意味着你可以使用os.listdir
答案 1 :(得分:1)
def find_files_by_filter(folder_path, filter):
"""
:rtype : list
"""
if not isdir(folder_path):
log('Folder path: '+ str(folder_path) + ' not found')
return []
re_filter = re.compile(filter)
all_files = listdir(folder_path)
result = [file for file in all_files if re_filter.search(file)]
return result
下:
file_name = []
for res in result:
file_name.append(res.split('.')[0]
print(file_name)
答案 2 :(得分:0)
如果我理解正确,您想检查每个文件名并仅返回不带扩展名的特定文件类型? 由于您正在使用 Windows ,我猜您可以这样做:
for filename in files:
try:
ext = filename.split('.')
if ext[1].lower() == 'gif' or ext[1].lower() == 'jpeg':
print ext[0]
except IndexError:
continue