2014-01-06 128 views
2

是否可以在Python中將文件夾壓縮成多個文件?我剛剛發現了一些如何將文件夾/文件壓縮到單個zip容器的示例。將文件夾壓縮成零件?

簡介:如何將一個文件夾壓縮到Python中的多個zip部分?

+1

[Here](http://stackoverflow.com/questions/10539612/create-split-archives-zip-rar-7z-in-python)是一個重複的,不幸的是你沒有回答。 – wim

回答

2
num_files = 4 #number of zip files to create 
dir_to_zip = "https://stackoverflow.com/a/file/path/" 
#get list of all files in directory 
files = [os.path.join(dir_to_zip,file) for file in os.listdir(dir_to_zip)] 
#partition the files how you want (here we just spit it into 4 equal length lists of files) 
files_in_parts = zip(*zip(*[iter(files)]*num_files)) 
#enumerate over each partition and add it to its own zip file 
for i,zip_contents in enumerate(files_in_parts,1): 
    with ZipFile('zipfile%s.zip'%i, 'w') as myzip: 
     map(myzip.write,zip_contents) 
+0

如果'dir_to_zip'目錄中的條目數量不能被'num_files'整除,那麼你的代碼會丟失一些文件。你試圖存檔文件名而不是內容('zip_contents'是你的案例中的文件列表)。但是一般的想法(將不同的文件分佈到不同的檔案中)可能會起作用(可以很容易地修改它以考慮相關的文件大小)。 – jfs

+0

是的我沒有真正期望任何人直接複製和粘貼。它更多地表達了它應該根據用戶需求進行分區的想法 –

0

對於它的價值,標準ziplib兩個Python 2.7Python 3.3明確地說,它不支持多磁盤的檔案:

該模塊目前不處理多盤的ZIP文件。

如果您希望創建單個邏輯多文件歸檔,則可能會被迫爲shell out to an operating system command

+0

要清楚的是,這裏的多磁盤意味着多文件,而不是像硬盤或類似的東西? – TankorSmash

+0

@TankorSmash,是的,多個文件。據我所知,此功能旨在生成多個可預測大小的文件,共同組成一個邏輯歸檔。這些文件中的每一個都可以放在自己的物理磁盤上(例如軟盤),磁盤可以移動到另一個位置,並提取數據。 – Chris