在我的程序中,我想讓用戶運行一個shell命令或執行一個二進制文件。不管我讀了多少關於subprocess.Popen
我都找不到一種方法來複制os.system()
功能。在Python中使用子進程複製os.system功能?
我只是想echo $USER
但似乎沒有任何工作。
談到shell=True
..
>>> subprocess.Popen(['echo', '$USER'], shell=True,\
stdout=subprocess.PIPE,\
stderr=subprocess.PIPE).communicate()
>>> ('\n', '')
傳遞當前的環境瓦爾..
>>> subprocess.Popen(['echo', '$USER'], shell=True,\
env=os.environ\
stdout=subprocess.PIPE,\
stderr=subprocess.PIPE).communicate()
>>> ('\n', '')
那麼什麼是運行shell命令的正確方法?
-------編輯:要求---------
有人發佈答案,但也許我應該更具體。我想同時保留stdout,stderr並返回存儲值某處。所有的答案似乎都給出了一個或另一個。
爲什麼不使用'os.environ ['USER']'? –
甚至更好,'import getpass'和'getpass.getuser()'用於跨操作系統的兼容性。 –
@DanielRoseman,因爲我不知道用戶將運行什麼命令,所以它只是通過所有環境更容易.. – Pithikos