繁体   English   中英

xp上的python:errno 13权限被拒绝-文件夹中文件数的限制?

[英]python on xp: errno 13 permission denied - limits to number of files in folder?

我在XP上运行Python 2.6.2。 我有大量的文本文件(100k +)分布在多个文件夹中,我希望将其合并到外部驱动器的单个文件夹中。

我试过使用shutil.copy()和shutil.copytree()以及distutils.file_util.copy_file()将文件从源复制到目标。 这些方法均未成功从源文件夹复制所有文件,并且每次尝试均因IOError Errno 13权限被拒绝而结束,并且我无法创建新的目标文件。

我注意到,无论使用什么源文件夹,我使用的所有目标文件夹最终都具有准确的13,106个文件。 我无法在包含这么多(或更多文件)的文件夹中打开任何要写入的新文件,这可能就是为什么我得到Errno 13的原因。

感谢您提供有关是否以及为什么发生此问题的建议。

尼克,非常感谢

您正在使用FAT32吗? FAT32文件夹中的目录条目的最大数量为65.534。 如果文件名长于8.3,它将占用多个目录条目。 如果以13106表示,则表明每个文件名足够长,需要五个目录条目。

解决方案:使用一个NTFS卷;然后使用一个NTFS卷。 它没有每个文件夹的限制,并且本机支持长文件名(即,不使用多个8.3条目)。 NTFS卷上的文件总数限制为43亿左右,但可以任意组合形式放置在文件夹中。

我在一个文件夹中不会有那么多文件,这是一场维护噩梦。 但如果需要,请不要在FAT上执行此操作:最大 FAT文件夹中的64k文件。

阅读错误讯息

您的特定问题也可能是, 如错误消息所提示的那样 ,您正在击中一个无法访问的文件。 并且没有理由相信在这种情况发生之前文件的数量应该改变。 毕竟它是一台计算机,并且您要重复相同的操作。

我预计您的外部驱动器的格式为32,并且您要写入的文件名长度约为45个字符。

FAT32在一个目录中只能有65536个目录条目。 长文件名每个都使用多个目录条目。 并且“。” 总是占用一个条目。 您能够写入65536/5-1 = 13106个条目,强烈表明您的文件名每个都占用5个条目,并且您具有FAT32文件系统。 这是因为存在使用16位数字作为目录条目偏移量的代码。

此外,你不想在FAT通过多1000进入目录搜索-搜索是线性的。 即,fopen(some_file)会导致操作系统从每次开始一直线性浏览文件列表,直到找到some_file或从列表末尾开始。

简短答案:目录是一件好事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM