我在Python脚本中有以下代码
inputfile = sys.argv[1];
subprocess.run(["cat",
inputfile, "| sh script1.sh | sh script2.sh | uniq > outputfile.txt"], check=True, shell=True)
目前,如果我运行它,它就会挂起。我做错了什么?我的猜测是inputfile参数不正确。
发布于 2018-12-20 03:01:30
当您使用shell=True
时,subprocess.run
的第一个参数应该是字符串,而不是列表。当您传递列表时,只使用第一个元素,因此您的调用等同于:
subprocess.run("cat", check=True, shell=True)
当然,...which将永远挂起,等待输入。
更新
因此,您的命令将如下所示:
subprocess.run("cat {} | sh script1.sh | sh script2.sh | uniq > outputfile.txt".format(inputfile),
check=True, shell=True)
https://stackoverflow.com/questions/53857435
复制相似问题