繁体   English   中英

如何使用subprocess.run用管道调用Shell命令?

[英]How to invoke shell commands with pipes using subprocess.run?

我在Python脚本中有以下代码

    inputfile = sys.argv[1];

    subprocess.run(["cat",
            inputfile, "| sh script1.sh | sh script2.sh | uniq  > outputfile.txt"], check=True, shell=True)

目前,如果我运行它,它会挂起。 我究竟做错了什么? 我的猜测是inputfile参数不正确。

使用shell=Truesubprocess.run的第一个参数应该是字符串 ,而不是list 传递列表时,仅使用第一个元素,因此您的调用等效于:

subprocess.run("cat", check=True, shell=True)

...这当然会永远挂着等待输入。

更新

因此,您的命令将类似于:

subprocess.run("cat {} | sh script1.sh | sh script2.sh | uniq  > outputfile.txt".format(inputfile),
               check=True, shell=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM