Python 将大量文件与大量正则表达式字符串匹配时的最佳做法
我有一个包含数千个文件的目录。我想根据文件名将它们分类到目录中,但许多文件名非常相似 我的想法是,我必须写出一堆正则表达式字符串,然后进行某种循环。这是我的问题: 这两个选项中的一个比另一个更优化吗?我是否循环检查所有文件,并针对每个文件检查我的正则表达式,跟踪匹配的数量?或者我做相反的操作,在正则表达式上循环并触摸每个文件Python 将大量文件与大量正则表达式字符串匹配时的最佳做法,python,Python,我有一个包含数千个文件的目录。我想根据文件名将它们分类到目录中,但许多文件名非常相似 我的想法是,我必须写出一堆正则表达式字符串,然后进行某种循环。这是我的问题: 这两个选项中的一个比另一个更优化吗?我是否循环检查所有文件,并针对每个文件检查我的正则表达式,跟踪匹配的数量?或者我做相反的操作,在正则表达式上循环并触摸每个文件 我不得不用python来做这件事,因为那是我最强的语言,但我对其他想法持开放态度 这是我为我的一个程序使用的代码,我为您的目的对其进行了修改,它得到一个目录(sort_di
我不得不用python来做这件事,因为那是我最强的语言,但我对其他想法持开放态度 这是我为我的一个程序使用的代码,我为您的目的对其进行了修改,它得到一个目录(sort_dir),每个文件都有一个目录,并根据文件名创建目录,然后将文件移动到这些目录中。由于您没有提供任何有关您希望对文件进行排序的位置或方式的信息,因此您必须在我提到的部分中添加以下内容:
def sort_files(sort_dir):
for f in os.listdir(sort_dir):
if not os.path.isfile(os.path.join(sort_dir, f)):
continue
# this is the folder names to be created, what do you want them to be?
destinationPath = os.path.join(sort_dir,f) #right now its just the filename...
if not os.path.exists(destinationPath):
os.mkdir(destinationPath)
if os.path.exists(os.path.join(destinationPath,f)):
at = True
while at:
try:
shutil.move(os.path.join(sort_dir,f), \
os.path.join(destinationPath,f))
at = False
except:
continue
else:
shutil.move(os.path.join(sort_dir,f), destinationPath)
除非有太多的文件(或正则表达式),您无法同时在内存中保存所有的文件名和已编译的正则表达式,否则我怀疑设置循环的顺序无关紧要。您可以轻松地
导入re
,然后在我提到的位置查找,并将destinationPath设置为所需的路径。