如何快速打开非常​​大的文件夹中的文件?

时间:2014-12-27 13:06:21

标签: python file ntfs

我有一个包含大约220,000个文本文件的文件夹。我需要按特定顺序打开它们,并对内容做一些事情。目前,我只使用open,平均需要大约半秒才能打开文件。有没有更快的方法呢?

如果重要 - 我在Windows上。

2 个答案:

答案 0 :(得分:1)

过去我遇到过类似的问题。在我的情况下,这是一个充满了我试图处理的jpeg图像的目录。它们在文件名的前几个字符中有相似的名称,这导致了真正的性能问题。

NTFS中有一个遗留兼容性功能,它为每个文件名分配一个符合旧DOS 8.3文件名限制的影子文件名。是的,以前只能命名文件ABCDEFGH.EXT,文件名不能再长。遗留可比性功能为每个与8.3不匹配的文件分配一个高飞别名,为其命名为ABCDEF~1.EXT。当你有很多文件时,这种兼容性功能的表现就是说话 - burro可怕。

我刚刚检查了相对较新的Windows 7安装,并且仍然打开了兼容性功能。

您可以使用fsutil计划which you can read about here关闭整个卷的此功能。您需要具有管理员权限的cmd或powershell窗口才能执行此操作。

 fsutil 8dot3name query h:

会告诉您是否在h驱动器上启用了此功能。

 fsutil 8dot3name set h: 1

将在您的驱动器上完全禁用它。这可能对您的启动驱动器具有破坏性,特别是如果您有旧的旧版软件。当我实现这个时,我确保包含大量文件的目录在非启动驱动器上,并且我单独启动了启动驱动器。

您可以使用此命令从“目录路径中的所有文件”中剥离阴影8.3名称

 fsutil 8dot3name strip /s h:\data\transactions

从大目录中的文件中删除这些名称可能有助于提高性能。 (首先备份目录,也许使用7zip或其他东西)。

在剥离这些旧版文件名之前,请先阅读fsutil的文档!

答案 1 :(得分:0)

这是底层文件系统的问题。使用更适合大量文件的文件系统。构建了一个目录树,在文件名的第一个,第二个,第三个...字符之后将文件排序到目录中。