使用 subprocess.call 解压文件 运行 成功但没有效果

Untar file with subprocess.call is running successfully but with no effect

有谁知道我用这个命令做错了什么:

import subprocess

subprocess.call('tar -zvxf %s -C %s' % ("file.tar.gz", '/folder'), shell=True)

代码运行没有任何错误,但文件只是在随机情况下解压缩。我知道我可以使用 tarfile,但我想 运行 它作为 Linux 命令。有什么想法吗?

如果您阅读手册页,您会发现 -C 参数对顺序很敏感——它只影响命令行上它后面的操作。因此,您的文件将被解压缩到您碰巧所在的任何随机目录中。

您不需要 shell。做:

import os
import subprocess

os.chdir('/folder')
subprocess.call( ['tar','xvfz', 'file.tar.gz'] )