使用defaultdi的Python重复文件查找器

2024-03-29 11:28:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试不同的方法来识别重复文件,基于文件内容,通过循环访问文件夹A-Z所在的顶层目录。在文件夹A-Z中,还有一个以当前日期命名的文件夹层。最后,在带日期的文件夹中,有几千到几百万个不同格式的文件。在

使用下面的脚本,我能够在大约4小时内处理大约80万个文件。然而,在一个大约13000000个文件的更大的数据集上运行它,它总是在包含大约150万个文件的字母“I”上崩溃。在

考虑到我正在处理的数据的大小,我正在考虑将内容直接输出到文本文件,然后将其导入MySQL或类似的文件以进行进一步处理。请让我知道,如果我正在走正确的轨道,或者如果你觉得下面的脚本修改版本应该能够处理1300多万个文件。在

问题-我如何修改下面的脚本来处理1300多万个文件?在

错误回溯:

Traceback (most recent call last):
  File "C:/Users/"user"/PycharmProjects/untitled/dups.py", line 28, in <module>
    for subdir, dirs, files in os.walk(path):
  File "C:\Python34\lib\os.py", line 379, in walk
    yield from walk(new_path, topdown, onerror, followlinks)
  File "C:\Python34\lib\os.py", line 372, in walk
    nondirs.append(name)
MemoryError

我的代码:

^{pr2}$

Tags: 文件数据path方法inpy脚本文件夹
1条回答
网友
1楼 · 发布于 2024-03-29 11:28:47

免责声明:我不知道这是否是一个解决方案。在

我查看了您的代码,发现错误是由.walk引起的。现在这是真的,这可能是因为处理了太多的信息(所以也许外部数据库会有帮助,尽管添加的操作可能会阻碍您的速度)。但除此之外,.listdir(由.walk调用)在处理大量文件时非常糟糕。希望这是resolved in Python 3.5,因为它实现了更好的scandir,所以如果你愿意*尝试最新的版本(我是说最新版本,它是release,what,8 days ago?),这对可能有帮助。在

除此之外,你可以尝试追踪bottlenecks,和{a5}来找出答案。在

*您也可以使用当前的python将其与pip一起安装,但其中的乐趣何在?

相关问题 更多 >