簡體   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