gpt4 book ai didi

python - 从特定文件名列表中删除大量文件(python)

转载 作者:行者123 更新时间:2023-12-01 01:22:57 25 4
gpt4 key购买 nike

我需要从列表中删除大量文件及其名称(我需要从总共 10015 个文件中删除 2450 个文件)。但是我使用的代码虽然有效,但完成这项工作太耗时。它绝对没有经过优化来更快地完成工作。有人有更好的主意来解决这个问题吗?

os.chdir(directoryPath)
for filename in os.listdir('D:\Python\Jupyter\IP_Project\DataBase'):
for pattern in ['ISIC_0024396*', 'ISIC_0024630*', 'ISIC_0024672*',
'ISIC_0024700*', 'ISIC_0024771*', 'ISIC_0024834*',
'ISIC_0024869*', 'ISIC_0024918*', 'ISIC_0024962*',
'ISIC_0024998*', 'ISIC_0025005*', 'ISIC_0025040*',
'ISIC_0025046*', 'ISIC_0025064*', 'ISIC_0025073*',
'ISIC_0025112*', 'ISIC_0025152*', 'ISIC_0025168*',
'ISIC_0025170*', 'ISIC_0025193*', 'ISIC_0025208*',
'ISIC_0025231*', 'ISIC_0025297*', 'ISIC_0025322*',
'ISIC_0034319*', 'ISIC_0034320*']:
if fnmatch.fnmatch(filename, pattern):
os.remove(filename)

注意:我减少了上述代码中的文件名数量,以更好地说明我的想法。但正如我上面所说,这些是 2450 个文件名。

感谢您的提示!

最佳答案

正如我在上面的评论中所述,在找到第一个匹配项后,您目前正在继续检查是否有进一步的匹配项,即使在这种情况下您不会这样做,并且由于文件已被删除,因此通过在匹配:

os.chdir(directoryPath)
for filename in os.listdir('D:\Python\Jupyter\IP_Project\DataBase'):
for pattern in ['ISIC_0024396*', 'ISIC_0024630*', 'ISIC_0024672*',
'ISIC_0024700*', 'ISIC_0024771*', 'ISIC_0024834*',
'ISIC_0024869*', 'ISIC_0024918*', 'ISIC_0024962*',
'ISIC_0024998*', 'ISIC_0025005*', 'ISIC_0025040*',
'ISIC_0025046*', 'ISIC_0025064*', 'ISIC_0025073*',
'ISIC_0025112*', 'ISIC_0025152*', 'ISIC_0025168*',
'ISIC_0025170*', 'ISIC_0025193*', 'ISIC_0025208*',
'ISIC_0025231*', 'ISIC_0025297*', 'ISIC_0025322*',
'ISIC_0034319*', 'ISIC_0034320*']:
if fnmatch.fnmatch(filename, pattern):
os.remove(filename)
break # break now that we matched and move on to next file

理论上,您可以将处理所有这些问题所需的时间减少大约一半(假设每个模式的名称均匀分布)

关于python - 从特定文件名列表中删除大量文件(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53633908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com