2017-05-20 81 views
0

我想命令行的結果在標籤中顯示,現在它說明不了什麼,如果我用call代替check_output則顯示爲0。標籤沒有顯示命令行輸出在python 2.7 ubuntu上

def find(): 
     take=text.get("1.0", "end-1c") 
     info = subprocess.check_output("grep -i '{take}' /var/log/syslog > logs/uzklausa/$(date +%d_%m_%Y.txt)".format(take=take), shell=True) 
     w = Label(root, text = info) 
     w.pack(side=BOTTOM) 

是因爲我使用錯誤的命令進行子過程,還是因爲我保存到文件中,因此它不能顯示答案。

+0

對於我們來說,根據你在這裏展示的內容來判斷命令是否是錯誤是非常困難的。要確定它是否是錯誤的命令,請將您傳遞給'subprocess.check_output()'的命令打印出來,粘貼到命令行中,看看會發生什麼。 – BoarGules

+0

好吧,它什麼也沒說,只是這個命令成功完成了,但是信息取自syslog文件,所以我需要標籤中顯示的信息 – Lenton

回答

1

您的命令將其輸出管道輸送到logs/uzklausa/20_05_2017.txt。所以當你手動運行它時,你想要的數據不會進入屏幕,並且出於同樣的原因,它不會被check_output()返回。打開您要管道的文件並從中讀取數據,或者不要將命令輸出重定向到文件。