【问题标题】:Using python subprocess and 7-zip to extract .tgz file使用 python 子进程和 7-zip 提取 .tgz 文件
【发布时间】:2021-01-19 12:11:22
【问题描述】:

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

我需要调用 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 文件。

【问题讨论】:

    标签: python subprocess extract 7zip


    【解决方案1】:

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

    【讨论】: