我想使用子流程模塊在pythong
中運行命令,並將輸出存儲在變量中。但是,我不希望將命令的輸出打印到終端。 對於此代碼:將子流程標準輸出轉換爲變量
def storels():
a = subprocess.Popen("ls",shell=True)
storels()
我得到的終端目錄列表,而不是有它存儲在a
。我也試過:
def storels():
subprocess.Popen("ls > tmp",shell=True)
a = open("./tmp")
[Rest of Code]
storels()
這也打印ls的輸出到我的終端。我甚至用有點過時的os.system方法試過這個命令,因爲在終端中運行ls > tmp
並不打印ls
到終端,而是將它存儲在tmp
中。然而,同樣的事情發生。
編輯:
我得到以下marcog的意見後,下面的錯誤,但運行更復雜的命令,只有當。 cdrecord --help
。蟒蛇吐出了這一點:
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_exception
OSError: [Errno 2] No such file or directory
請注意,Python文檔中不鼓勵使用`shell = true`。 http://docs.python.org/2/library/subprocess.html#frequently-used-arguments – SamHuckaby 2013-12-09 16:13:51