[英]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=True
, subprocess.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.