我想从一个包含子文件夹的.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"