首页 > 解决方案 > 使用 python 子进程和 7-zip 提取 .tgz 文件

问题描述

我正在尝试通过使用 subprocess 函数调用 7-zip 来提取 .tgz 文件(此处提供有用的堆栈溢出帖子)

我需要调用 subprocess 两次。首先从 .tgz --> .tar 解压,然后从 .tar --> .txt 解压

我的代码成功解压缩了第一步,但第二步没有任何反应,有什么想法吗?

subprocess.Popen([r'C:\Program Files\7-Zip\7z.exe', 'e', '-y', '-r', '-o' + pth, os.path.join(root, 'myZip.tgz')])
subprocess.Popen([r'C:\Program Files\7-Zip\7z.exe', 'e', '-y', '-r', '-o' + pth, os.path.join(pth, 'myZip.tar')])

“pth”是输出路径,“root”是原始压缩文件所在的路径。我打开了 pth 文件夹,实际上那里有一个 myZip.tar 文件。

标签: pythonsubprocessextract7zip

解决方案


Popen() 是一个非阻塞调用,它启动另一个进程但不等待它完成。您需要等待第一次调用完成,然后再进行第二次调用,以确保 .tar 文件存在。


推荐阅读