Return 只有某些没有扩展名的文件名
Return only certain filename without extension
因此,根据我之前询问的 post,我发现以下代码有效:
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
但是,现在我希望此列表仅 return 某种类型的文件,例如仅 .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)
如果我没理解错的话,您想检查每个文件名并且 return 只检查没有扩展名的特定文件类型?
由于您正在研究 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
您可以使用 str.endswith 传递扩展元组:
f.extend((os.path.splitext(name)[0] for name in filenames if name.lower().endswith((".jpeg", ".gif")))
我不确定为什么你的 for 循环中有一个 break,因为这意味着你循环一个目录,你可以用 os.listdir
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)
因此,根据我之前询问的 post,我发现以下代码有效:
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
但是,现在我希望此列表仅 return 某种类型的文件,例如仅 .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)
如果我没理解错的话,您想检查每个文件名并且 return 只检查没有扩展名的特定文件类型? 由于您正在研究 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
您可以使用 str.endswith 传递扩展元组:
f.extend((os.path.splitext(name)[0] for name in filenames if name.lower().endswith((".jpeg", ".gif")))
我不确定为什么你的 for 循环中有一个 break,因为这意味着你循环一个目录,你可以用 os.listdir
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)