我正在编写一个Python脚本,它从标准输入流中读取数据,并将这个流传递给
subprocess
进行进一步处理。问题在于,在处理完输入流后,Python会挂起。
例如,这个玩具程序sorter.py
应该从标准输入中读取数据,并通过Unix sort
将数据流传递给subprocess
进行排序:
cat dat.txt | ./sorter.py
#!/usr/bin/env python
import subprocess
import sys
p= subprocess.Popen('sort -', stdin= subprocess.PIPE, shell= True)
for line in sys.stdin:
p.stdin.write(line)
sys.exit()
cat
命令输出的流已经正确排序,但程序卡住了,也就是说 sys.exit() 没有被执行。
我已经阅读了很多类似的变体,但仍然不能解决问题。有没有什么遗漏的地方?
谢谢!
Dario