我尝试从一个文件夹中包含子文件夹的 .zip 中提取所有文件。我希望子文件夹中的所有文件仅提取到一个文件夹中,而不保留原始结构。目前,我提取所有文件,将文件移动到一个文件夹,然后删除以前的子文件夹。具有相同名称的文件将被覆盖。
是否可以在写入文件之前做到这一点?
下面是一个结构示例:
my_zip/file1.txt
my_zip/dir1/file2.txt
my_zip/dir1/dir2/file3.txt
my_zip/dir3/file4.txt
最后我希望这样:
my_dir/file1.txt
my_dir/file2.txt
my_dir/file3.txt
my_dir/file4.txt
我可以在此代码中添加什么?
import zipfile
my_dir = "D:\\Download\\"
my_zip = "D:\\Download\\my_file.zip"
zip_file = zipfile.ZipFile(my_zip, 'r')
for files in zip_file.namelist():
zip_file.extract(files, my_dir)
zip_file.close()
如果我从 zip_file.namelist() 重命名文件路径,则会出现以下错误:
KeyError: "There is no item named 'file2.txt' in the archive"