Tar——exclude在打开时不工作(shell=False)



我正在尝试使用Popen执行以下命令。

args = ['/bin/tar', "--exclude='{}'".format('Build.tar.gz'), '-capvf', targetFile, '.' ]
popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)

然而,排除部分只工作,如果我设置shell=True IE运行上述命令不排除文件'Build.tar.gz'。为什么呢?有没有办法在不设置shell=True的情况下使其工作?

去掉"--exclude='{}'".format(...)的单引号,用"--exclude={}".format(...)

当你不使用shell=True时,你不需要使用转义。引号只对shell有意义,它们在执行命令创建参数列表之前被删除。如果您在Popen的参数列表中使用引号,它们将作为字面引号字符传递,因此在您的情况下,您将排除包含引号的'Build.tar.gz'

最新更新