在 python 中压缩文件的正确方法
proper way for zipping files in python
我正在尝试通过从特定目录压缩几个文本文件来创建一个 zip 文件。我的代码如下所示:
import zipfile,os
project='C:/Users/user1/Documents/work/filesToZip'
dirlist = os.listdir(project)
print dirlist
zip_name = zipfile.ZipFile(os.path.join(project,'jobs.zip'),'w')
for file in dirlist:
zip_name.write(os.path.join(project,file))
zip_name.close()
代码运行良好,它创建了 zip 文件,唯一的问题是当我打开 zip 文件时,我发现整个目录结构都被压缩了。即当我打开文件时,我会发现用户打开它然后 user1 打开它然后文档打开它然后工作然后 filesToZip 然后我找到我想要压缩的文件。我的问题是如何获取文件结构的红色,以便在打开 zip 文件时立即找到我压缩的文件?
提前致谢!
对于 python 2.7+,您可以使用 shutil
代替:
from shutil import make_archive
make_archive(
'zipfile_name',
'zip', # the archive format - or tar, bztar, gztar
root_dir=None, # root for archive - current working dir if None
base_dir=None) # start archiving from here - cwd if None too
这样您就可以明确指定哪个目录应该是 root_dir
哪个目录应该是 base_dir
。如果 root_dir
和 base_dir
不同,它只会压缩 base_dir
中的文件,但保留目录结构直到 root_dir
import zipfile,os
project='C:/Users/user1/Documents/work/filesToZip'
original_dir= os.getcwd()
os.chdir(project)
dirlist = os.listdir(".")
print dirlist
zip_name = zipfile.ZipFile('./jobs.zip','w')
for file in dirlist:
zip_name.write('./'+file)
zip_name.close()
os.chdir(original_dir)
ZipFile.write
有 an optional second parameter archname
这正是你想要的。
import zipfile,os
project='C:/Users/user1/Documents/work/filesToZip'
# prevent adding zip to itself if the old zip is left in the directory
zip_path = os.path.join(project,'jobs.zip')
if os.path.exists(zip_path):
os.unlink(zip_path);
dirlist = os.listdir(project)
zip_file = zipfile.ZipFile(zip_path, 'w')
for file_name in dirlist:
zip_file.write(os.path.join(project, file_name), file_name)
zip_file.close()
我正在尝试通过从特定目录压缩几个文本文件来创建一个 zip 文件。我的代码如下所示:
import zipfile,os
project='C:/Users/user1/Documents/work/filesToZip'
dirlist = os.listdir(project)
print dirlist
zip_name = zipfile.ZipFile(os.path.join(project,'jobs.zip'),'w')
for file in dirlist:
zip_name.write(os.path.join(project,file))
zip_name.close()
代码运行良好,它创建了 zip 文件,唯一的问题是当我打开 zip 文件时,我发现整个目录结构都被压缩了。即当我打开文件时,我会发现用户打开它然后 user1 打开它然后文档打开它然后工作然后 filesToZip 然后我找到我想要压缩的文件。我的问题是如何获取文件结构的红色,以便在打开 zip 文件时立即找到我压缩的文件?
提前致谢!
对于 python 2.7+,您可以使用 shutil
代替:
from shutil import make_archive
make_archive(
'zipfile_name',
'zip', # the archive format - or tar, bztar, gztar
root_dir=None, # root for archive - current working dir if None
base_dir=None) # start archiving from here - cwd if None too
这样您就可以明确指定哪个目录应该是 root_dir
哪个目录应该是 base_dir
。如果 root_dir
和 base_dir
不同,它只会压缩 base_dir
中的文件,但保留目录结构直到 root_dir
import zipfile,os
project='C:/Users/user1/Documents/work/filesToZip'
original_dir= os.getcwd()
os.chdir(project)
dirlist = os.listdir(".")
print dirlist
zip_name = zipfile.ZipFile('./jobs.zip','w')
for file in dirlist:
zip_name.write('./'+file)
zip_name.close()
os.chdir(original_dir)
ZipFile.write
有 an optional second parameter archname
这正是你想要的。
import zipfile,os
project='C:/Users/user1/Documents/work/filesToZip'
# prevent adding zip to itself if the old zip is left in the directory
zip_path = os.path.join(project,'jobs.zip')
if os.path.exists(zip_path):
os.unlink(zip_path);
dirlist = os.listdir(project)
zip_file = zipfile.ZipFile(zip_path, 'w')
for file_name in dirlist:
zip_file.write(os.path.join(project, file_name), file_name)
zip_file.close()