如何解决包含“ |”的子流程

时间:2018-11-22 11:38:46

标签: python subprocess

此代码无效。 我这样写。

str = "curl -s 'URL_ADDRESS' | tail -1".split()
p = subprocess.Popen(str,stdout=subprocess.PIPE).stdout
data = p.read()
p.close()
print(data)

但是结果是b''。 这是什么问题?

1 个答案:

答案 0 :(得分:3)

如果使用子流程,请使用代替'|'这样。

这将解决问题。

str = "curl -s 'URL_ADDRESS'".split()

tail = "tail -1".split()

temp = subprocess.Popen(str, stdout=subprocess.PIPE).stdout

temp1 = subprocess.Popen(tail, stdin=temp, stdout=subprocess.PIPE).stdout

temp.close()

data = temp1.read()

temp1.close()