[英]Not yielding files inside nested folders using python zipfile
解決了,檢查標記的答案似乎用 os.walk()標記的答案執行得更快。
(Python 3.8,zipfile 模塊,Windows 10 Anaconda)
我正在使用 python 的zipfile
模塊來創建我的文件夾的 Zip 文件。
我的文件夾是 D:/Personals。 個人的os.listdir
產生 2 個文件夾和 171 個文件。 當我檢查 zip 時,它包含文件夾的所有 171 個文件和 2 個內部嵌套文件夾。 但是內部嵌套文件夾是空的,盡管每個文件夾都包含許多單獨的文件。 這是我的代碼。
from zipfile import ZipFile
from os import listdir
dir_path = 'D:/Personals'
export_path = 'D:/Zipper'
items_list = listdir(dir_path)
zipper = ZipFile(export_path+'/S1.zip','w')
for item in items_list:
zipper.write(dir_path+'/'+item)
zipper.close()
它已生成文件夾內的所有文件,但未能返回 2 個嵌套文件夾內的文件。 請告知我該怎么辦?
提前謝謝了。
使用 ZipFile 模塊壓縮文件夾時,您必須使用遞歸來包含子文件夾。
試試這個代碼:
from zipfile import ZipFile
from os import listdir, path
dir_path = 'D:/Personals' # root folder to zip
export_path = 'D:/Zipper' # target folder for zip file
items_list = listdir(dir_path)
zipper = ZipFile(export_path+'/S1.zip','w')
def addzipitems(zipper, folder): # single folder
for item in listdir(folder): # each item (file or folder)
zipper.write(folder+'/'+item) # add item to zip (for folder, will add empty)
if path.isdir(folder +'/'+item): # if item is subfolder
addzipitems(zipper, folder +'/'+item) # process subfolder
addzipitems(zipper, dir_path) # start at root folder
zipper.close()
您還可以使用os.walk
來獲取目錄樹中的所有文件。 不需要遞歸。
from zipfile import ZipFile
from os import listdir, path, walk
dir_path = 'D:/Personals' # root folder to zip
export_path = 'D:/Zipper' # target folder for zip file
zipper = ZipFile(export_path+'/S1.zip','w')
for path, directories, files in walk(dir_path): # all folders\files in tree
for f in files: # files is list
zipper.write(path+'/'+f)
zipper.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.