我在Python脚本中有以下代码
inputfile = sys.argv[1];
subprocess.run(["cat",
inputfile, "| sh script1.sh | sh script2.sh | uniq > outputfile.txt"], check=True, shell=True)
当前,如果我运行它,它将挂起。我究竟做错了什么?我的猜测是inputfile参数不正确。
答案 0 :(得分:0)
使用shell=True
时,subprocess.run
的第一个参数应该是 string ,而不是 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)