使用Python子进程执行tar命令时不会排除某些文件--exclude选项

时间:2017-10-11 13:56:55

标签: python tar

我正在使用python子进程模块

执行tar命令
import subprocess
cmd = ["/bin/tar", "-czf", "file.tar.gz", "./dir", "--exclude", "\"*cpp*\""]
subprocess.Popen(cmd)

但是没有发生cpp文件的排除。

当我在shell提示符下运行相同的命令时,它运行正常。我做错了什么?

1 个答案:

答案 0 :(得分:2)

忽略文字引号。那就是:

cmd = ["/bin/tar", "-czf", "file.tar.gz", "--exclude", "*cpp*", "./dir"]

否则,您只会排除名称以"开头和结尾的文件。

解释原因:在shell中编写--exclude "*cpp*"时,这些引号是 syntactic ,而不是文字。它们告诉shell不要用文件列表替换*cpp*;他们没有自己传递给tar