这是我第一次来这里,所以请耐心等待。我正在处理一些python代码,特别是遇到一个块的问题所以我将从我一直在研究的测试脚本中发布我的代码。我甚至使用了打印调试器语句来找出错误,并且看起来第3个管道没有从第2个管道获取stdin,即使第2个管道输出输出。如果我注释掉output3并使用output2,则会创建并填充文件,但是一旦我包含output3,该文件就完全为空。非常感谢任何帮助!
#!/usr/bin/python
import subprocess
try:
output = subprocess.Popen(['ps', 'ax'], stdout=subprocess.PIPE)
output2 = subprocess.Popen(['egrep', '/usr/'], stdin=output.stdout, stdout=subprocess.PIPE); output.stdout.close()
output3 = subprocess.Popen(['egrep', '"sbin|lib"'], stdin=output2.stdout, stdout=subprocess.PIPE); output2.stdout.close()
with output3.stdout, open('some file name', 'ab') as file:
for line in iter(output3.stdout.readline, b''):
file.write(line)
except OSError as message:
print "Display bad things {}!".format(message)
如果我错过了一些拼写错误,我不得不把它堵住了!