我在这里搜索了很多并用谷歌搜索,试图找出为什么我的第一个命令中的 stderr 在最终的 stderr 中没有看到。我知道其他方法,例如“check_output”(python3)和“commands”(python2),但我想编写自己的跨平台方法。这是问题所在:
import subprocess
p1 = subprocess.Popen('dirr', shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
p2 = subprocess.Popen('find "j"', shell=True, stdin=p1.stdout, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
p1.stdout.close()
output,error=p2.communicate()
print(output,'<----->',error)
我也尝试重定向 stderr=subprocess.STDOUT,但这并没有改变事情。您能告诉我如何从第一个命令重定向标准错误,以便我可以在标准输出或标准错误中看到它吗?
问候,