2017-08-07 160 views
1

我在學習Python Think Python。我遇到的問題是,當我嘗試在代碼中的示例:與os.popen相關的問題

import os 
cmd = 'ls -l' 
fp = os.popen(cmd) 
res = fp.read() 
stat = fp.close() 
print res 

然而,print res只返回一個空字符串,它應該以長格式顯示當前目錄的內容。 print stat返回1表示過程中出現問題,但沒有錯誤消息。我究竟做錯了什麼?

+0

你想這在Linux吧?只是問問。 ['os.popen()'](https://docs.python.org/2/library/os.html#os.popen)中的 –

+0

:_Deprecated自版本2.6:此功能已過時。使用['subprocess'](https://docs.python.org/2/library/subprocess.html#module-subprocess)模塊。特別檢查使用子流程模塊部分替換舊功能._ – Arount

+0

謝謝大家。我沒想到我的問題得到如此快速的回答。 – Jamie

回答

0

我的第一個猜測是你在一個Windows系統上工作。如果用'dir'代替'ls -l',它應該在windows上工作。

0

你的代碼工作正常,只是你正在工作的Windows系統。 我更正了您的代碼:

import os 

cmd = 'dir' 
fp = os.popen(cmd) 
res = fp.read() 
stat = fp.close() 
print res 
print stat 
0

它應該在Python 2.7(至少)中起作用。

無論如何,它沒有回答爲什麼它沒有工作(但我認爲這不是一個Python或os.popen()問題,但另一個更薈萃的事情),但是,從os.popen() doc

因爲版本棄用2.6:此功能已過時。使用 subprocess模塊。特別檢查使用 子過程模塊部分替換舊功能。


如果您使用的是Windows使用dir代替ls