如何在Python中的目录中查找具有特定文件扩展名的所有文件
Posted
技术标签:
【中文标题】如何在Python中的目录中查找具有特定文件扩展名的所有文件【英文标题】:How to find all files with specific file extensions in a directory in Python 【发布时间】:2020-02-14 16:22:01 【问题描述】:假设我有一个文件夹,其中包含多个文件类型不同的文件: .jpg、.jpeg、.png、.tif、.gif、.docx、.pptx、.xlsx、.mp4、.avi、.mpeg 等。
我应该如何设置一个在指定目录中搜索特定文件类型集的函数?
假设我只想要图像文件(即 jpg、jpeg、png、tif 和 gif)。 或者我只想要视频文件(.mp4、.avi、.mpeg)。
我是否必须为这些文件类型中的每一种都编写一个单独的函数? 或者我可以有一个搜索图像文件、视频文件等的函数吗?
import os
def enterFilePath():
global filepath
filepath = input("Please enter your file path. ")
enterFilePath()
def enterFileName():
global name
name = input("Name the file. "))
enterFileName()
def data_list():
for elem in os.listdir(filepath):
if elem.endswith('.jpg'):
listItem = elem + '\n'
listName = filepath + (r"\List.txt".format(name))
writeFile = open(listName, 'a')
writeFile.write(listItem)
writeFile.close()
if elem.endswith('.jpeg'):
listItem = elem + '\n'
listName = filepath + (r"\List.txt".format(name))
writeFile = open(listName, 'a')
writeFile.write(listItem)
writeFile.close()
if elem.endswith('.png'):
listItem = elem + '\n'
listName = filepath + (r"\List.txt".format(name))
writeFile = open(listName, 'a')
writeFile.write(listItem)
writeFile.close()
if elem.endswith('.tif'):
listItem = elem + '\n'
listName = filepath + (r"\List.txt".format(name))
writeFile = open(listName, 'a')
writeFile.write(listItem)
writeFile.close()
if elem.endswith('.gif'):
listItem = elem + '\n'
listName = filepath + (r"\List.txt".format(name))
writeFile = open(listName, 'a')
writeFile.write(listItem)
writeFile.close()
else:
continue
data_list()
【问题讨论】:
glob.glob()
【参考方案1】:
在一个字典中收集你所有的扩展,然后你可以快速轻松地将它们拉出来。我正在使用os.cwd()
,但您可以将其替换为您的目录。
import os
search =
for f in os.listdir(os.getcwd()):
fn, fe = os.path.splitext(f)
try:
search[fe].append(f)
except:
search[fe]=[f,]
# Example on how to search for your extensions and then do something
extensions = ('.png','.jpg')
for ex in extensions:
found = search.get(ex,'')
if found:
print(found)
【讨论】:
如果我需要对某些文件扩展名进行分组怎么办?假设我只想要图像文件组(即 jpg、jpeg、png、tif 和 gif),而不想要视频文件(.mp4、.avi、.mpeg)。我怎么能实现这个?在您的示例中,我们将扩展名作为图像文件的列表。但是如果还有我不想要的“.mp4”和“.avi”呢? 那么你需要做的就是创建一个组列表,然后迭代并从字典中提取信息。search = k:k[v] for k in search if k in list_of_extensions
以上是关于如何在Python中的目录中查找具有特定文件扩展名的所有文件的主要内容,如果未能解决你的问题,请参考以下文章