【发布时间】:2022-11-13 06:17:07
【问题描述】:
我有一个 .tar.gz 文件,其中可能包含以下文件:
folder1/folder2/folder3/imp_folder1/file11.jpg
folder1/folder2/folder3/imp_folder1/file12.jpg
folder1/folder2/folder3/imp_folder2/file21.jpg
folder1/folder2/folder3/imp_folder3/file31.jpg
...
...
我想将它解压到以下目录:
/new_folder1/new_folder2/imp_folder1/file11.jpg
/new_folder1/new_folder2/imp_folder1/file12.jpg
/new_folder1/new_folder2/imp_folder2/file21.jpg
/new_folder1/new_folder2/imp_folder3/file31.jpg
...
...
基本上,“folder1/folder2/folder3/”应该替换为“/new_folder1/new_folder2/”。而且,如果“imp”目录不存在,那么我必须创建它们
现在我有一个循环遍历 tar 中的所有成员并创建文件夹名称然后执行以下操作的实现
input_file = tar.extractfile (member)
with open (image_path_local, 'w') as output_file:
output_file.write(input_file.read())
input_file.close()
这个过程太慢了。 由于有很多文件(大约 100k),实现这一目标的最快方法是什么?
【问题讨论】:
-
您发布的代码似乎很难优化。如果您要解析 tar 文件两次,这可能是您可以避免的。