使用 python zipfile 不在嵌套文件夹中生成文件
Not yielding files inside nested folders using python zipfile
(Python 3.8,压缩文件模块,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()
它已生成文件夹内的所有文件,但未能生成 return 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()
(Python 3.8,压缩文件模块,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()
它已生成文件夹内的所有文件,但未能生成 return 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()