2016-03-16 45 views
0

查詢:如何將os.system返回函數的輸出存儲到字符串變量中?如何在python/tkinter中將系統返回函數的輸出存儲在字符串變量中

我嘗試下面的代碼,但它總是打印「0」

  1. 沒有宣佈()的USER_NAME作爲STRINGVAR
  2. 用下面的代碼查找用戶名。

    user_name = os.system("ypcat passwd | grep $USER | awk -F ':' '{print $5}'")

  3. 我試着印刷爲print user_name,但它打印 '0'。
  4. 而且,無論我使用user_name作爲變量,用用戶名替換它的打印爲「0」。

您可以分享您的輸入/註釋如何在python中存儲系統調用的輸出?

回答

1

os.system()返回執行命令的退出代碼,因此它是有道理的,這是0.如果你想存儲的執行命令的輸出,你應該使用subprocess.check_output()Subprocess Module

+0

哇..這是相當快。剛剛嘗試了子進程,它工作。 user_name = subprocess.check_output(「ypcat passwd | grep $ USER | awk -F':''{print $ 5}'」,shell = True) 謝謝您的回覆。欣賞那.. – Vimo

+0

不客氣。如果問題得到解決,請接受此答案。 – pholtz

0

如前所述,您正在從您發出的命令獲取返回碼,但必須有比獲取用戶名更簡單的方法。
有做這件事的多種方式,但最簡單的一種是:

import os 
user_name = os.environ['USERNAME'] 
相關問題