我正在使用python子进程模块
执行tar命令import subprocess
cmd = ["/bin/tar", "-czf", "file.tar.gz", "./dir", "--exclude", "\"*cpp*\""]
subprocess.Popen(cmd)
但是没有发生cpp文件的排除。
当我在shell提示符下运行相同的命令时,它运行正常。我做错了什么?
答案 0 :(得分:2)
忽略文字引号。那就是:
cmd = ["/bin/tar", "-czf", "file.tar.gz", "--exclude", "*cpp*", "./dir"]
否则,您只会排除名称以"
开头和结尾的文件。
解释原因:在shell中编写--exclude "*cpp*"
时,这些引号是 syntactic ,而不是文字。它们告诉shell不要用文件列表替换*cpp*
;他们没有自己传递给tar
。