2013-12-16 29 views
1

在這個主題「如何將輸出寫入文本文件」中有各種主題可用。 但我的問題是不同的,因爲有問題的命令的輸出是連續的。Linux,將輸出寫入文件並使用Python終止

我想要做的是什麼,命令cgps -s的輸出寫入文件aaa.txt

這裏是代碼,

import signal 
import os 
import subprocess 
p = subprocess.Popen(["cgps", "-s", ">> aaa.txt"], stdout=subprocess.PIPE,shell=True, preexec_fn=os.setsid) 
os.killpg(p.pid, signal.SIGTERM) 

代碼不會在所有的工作,沒有文件是與名稱創建aaa.txt

當我執行通過終端這個命令,

cgps -s > aaa.txt 

然後我必須按CTRL + C來終止從輸出文件寫入的輸出,因爲輸出是連續的。

有什麼辦法可以捕獲一個輸出並將其寫入文件並使用Python或使用命令行來終止它?

回答

1

所以你正在嘗試創建一個管道。試試這個:

import subprocess 

p = subprocess.Popen(["cgps", "-s"], stdout=subprocess.PIPE) 

with open("aaa.txt", "w") as f: 
    while True: 
     line = p.stdout.readline() 
     if not line: 
      break 
     if some_condition(): # <-- check whether you have enough output 
      p.terminate() 
      break 
     f.writeline(line) 

p.wait()