python on xp:errno 13权限被拒绝 - 限制文件夹中的文件数量?
我在XP上运行Python 2.6.2。我有大量文本文件(100k +)分布在多个文件夹中,我想将它们合并到外部驱动器上的单个文件夹中。python on xp:errno 13权限被拒绝 - 限制文件夹中的文件数量?
我试过使用shutil.copy()和shutil.copytree()和distutils.file_util.copy_file()将文件从源文件复制到目标文件。这些方法都没有成功复制源文件夹中的所有文件,并且每次尝试都以IOError Errno 13权限被拒绝结束,我无法创建新的目标文件。
我注意到,无论使用哪个源文件夹,我使用的所有目标文件夹都以13106个文件结束。我无法打开任何新的文件在有这么多(或多个文件)的文件夹中写入,这可能是为什么我要Errno 13.
我很感激关于是否以及为何发生此问题的建议。
千恩万谢, 缺口
您是否使用FAT32? FAT32文件夹中的最大目录条目数是65.534。如果文件名长度超过8.3,则需要多个目录条目。如果您以13,106表示,这表明每个文件名都足够长以至于需要五个目录条目。
解决方案:使用NTFS卷;它没有每个文件夹的限制,并且本地支持长文件名(即不使用多个8.3条目)。 NTFS卷上的文件总数限制在43亿左右,但可以以任意组合放入文件夹中。
我不会在一个文件夹中有很多文件,这是一个维护噩梦。但如果你需要的话,不要在FAT上这样做:你有最大的。 64K文件在FAT文件夹中。
读取错误消息
您的具体问题也可能是,你作为错误信息显示均创下一个文件,你不能访问。没有理由相信在这种情况发生之前文件的数量应该改变。毕竟这是一台电脑,而你正在重复相同的操作。
我预测你的外部驱动器的格式是32,而你写入的文件名是45个字符左右。
FAT32在目录中只能有65536个目录条目。长文件名每个使用多个目录条目。和“。”总是占用一个条目。您可以写65536/5 - 1 = 13106条目强烈建议您的文件名每个占用5个条目,并且您有一个FAT32文件系统。这是因为存在使用16位数字作为目录条目偏移量的代码。
此外,你做而不是想要通过FAT中的多1000条目录进行搜索 - 搜索是线性的。即fopen(some_file)会导致操作系统从头开始每次直线前进文件列表,直到它找到some_file或在列表的末尾移动。
简短回答:目录是一件好事。
照亮答案,谢谢。是的,文件名是40或41个字符长,包括文件扩展名后缀,我认为外部驱动器确实格式化为FAT32。我曾认为避免目录结构会更容易,但显然存在我不知道的重要折衷。再次感谢。 – nswitanek 2010-10-21 02:15:55
在问题中提供您的代码。 – pyfunc 2010-10-20 22:51:06