我想pythong使用subprocess模塊在中運(yùn)行命令,并將輸出存儲(chǔ)在變量中。但是,我不希望將命令的輸出打印到終端。對(duì)于此代碼:def storels(): a = subprocess.Popen("ls",shell=True)storels()我在終端中獲得目錄列表,而不是將其存儲(chǔ)在中a。我也嘗試過(guò): def storels(): subprocess.Popen("ls > tmp",shell=True) a = open("./tmp") [Rest of Code] storels()這也將ls的輸出打印到我的終端。我什至用某種過(guò)時(shí)的os.system方法嘗試了該命令,因?yàn)閘s > tmp在終端中運(yùn)行根本不會(huì)打印ls到終端,而是將其存儲(chǔ)在中tmp。但是,同樣的事情也會(huì)發(fā)生。編輯:在遵循marcog的建議后,但僅在運(yùn)行更復(fù)雜的命令時(shí),才出現(xiàn)以下錯(cuò)誤。cdrecord --help。Python將其吐出:Traceback (most recent call last): File "./install.py", line 52, in <module> burntrack2("hi") File "./install.py", line 46, in burntrack2 a = subprocess.Popen("cdrecord --help",stdout = subprocess.PIPE) File "/usr/lib/python2.6/subprocess.py", line 633, in __init__ errread, errwrite) File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child raise child_exceptionOSError: [Errno 2] No such file or directory
3 回答

胡說(shuō)叔叔
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您使用的是python 2.7或更高版本,執(zhí)行此操作的最簡(jiǎn)單方法是使用subprocess.check_output()命令。這是一個(gè)例子:
output = subprocess.check_output('ls')
要也重定向stderr,可以使用以下命令:
output = subprocess.check_output('ls', stderr=subprocess.STDOUT)
如果要將參數(shù)傳遞給命令,則可以使用列表,也可以使用調(diào)用Shell并使用單個(gè)字符串。
output = subprocess.check_output(['ls', '-a'])
output = subprocess.check_output('ls -a', shell=True)
添加回答
舉報(bào)
0/150
提交
取消