使用Python从zip文件中移除路径
我有一个压缩文件,里面有路径。当我用Python解压这个文件并把它放到我的目标文件夹时,它会在目标文件夹里创建路径下的所有文件。
目标文件夹是:d:\unzip_files
这个压缩文件里的路径和文件名是:\NIS\TEST\Files\tnt.png
解压后会变成:d:\unzip_files\NIS\TEST\Files\tnt.png
我想知道有没有办法只把tnt.png文件解压到d:\unzip_files里?还是说我必须一个个查看文件,然后把文件移动到目标文件夹,再删除那些空文件夹呢?
import os, sys, zipfile
zippath = r"D:\zip_files\test.zip"
zipdir = r"D:\unzip_files"
zfile = zipfile.ZipFile(zippath, "r")
for name in zfile.namelist():
zfile.extract(name, zipdir)
zfile.close()
所以,这里是我找到的解决办法……
import os, sys, zipfile
zippath = r"D:\zip_files\test.zip"
zipdir = r"D:\unzip_files"
zfile = zipfile.ZipFile(zippath, "r")
for name in zfile.namelist():
fname = os.path.join(zipdir, os.path.basename(name))
fout = open(fname, "wb")
fout.write(zfile.read(name))
fout.close()
谢谢你的帮助。
1 个回答
1
你觉得直接把文件当作二进制数据来读取并输出怎么样?还需要处理一些已经存在的文件的情况。
for name in zfile.namelist():
fname = os.path.join(zipdir, os.path.basename(name))
fout = open(fname, 'wb')
fout.write(zfile.read(name))