使用Python从zip文件中移除路径

3 投票
1 回答
1868 浏览
提问于 2025-04-17 05:06

我有一个压缩文件,里面有路径。当我用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))

撰写回答