将subprocess.call与变量和单引号一起使用

时间:2020-02-16 16:56:53

标签: python-3.x

我正在尝试在Python项目中使用终端命令find path -print0 | xargs -0 stat -f '%m %N'。显然,我需要提供path,因此我已经按照其他地方的建议在数组内拆分了表达式。目前我有subprocess.call(['find', path, '| xargs -0 stat -f "%m %N"'])

代码可以运行,但是path之后的所有内容都将被忽略。实际上,它会引发错误find: | xargs -0 stat -f "%m %N": No such file or directory,因此很明显我不理解命令的构成方式。

任何帮助都会很棒

编辑:

实际上,我认为从变量中提供参数可能会更好。所以我尝试了command = 'find ' + src_dir + ' -print0 | xargs -0 stat -f \'%m %N\''

使用print看起来不错,但是再次插入subprocess.call(osx_command)时,我得到了[Errno 2] No such file or directory:

1 个答案:

答案 0 :(得分:1)

尝试添加shell = True

subprocess.call(['find',path,'| xargs -0 stat -f“%m%N”'],shell = True)

shell = True表示通过shell执行程序,传递给程序的所有用户输入均根据所调用shell的语法和语义规则进行解释。