我想下面執行系統命令使用python:使用下面的Python代碼Python的不一致標準輸出subprocess.popen
cat txt_file | egrep "keyword1|keyword2|keyword3"
:
p1 = subprocess.Popen (['cat', txt_file], stdout=subprocess.PIPE)
p2 = subprocess.Popen (['egrep', "\"" + keyword_list + "\""], stdin=p1.stdout, stdout=subprocess.PIPE)
#where keyword_list is : "keyword1|keyword2|keyword3"
p1.stdout.close() #for p2 to exit if SIGPIPE from p1
out = p2.communicate()[0]
有多種線路的egrep的輸出,但是使用上面的腳本,我只能得到與變量out
中的中間關鍵字2匹配的行。
這裏有什麼問題?
更新: 平臺:窗口 txt_file相當大〜8 MB