我在學習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
表示過程中出現問題,但沒有錯誤消息。我究竟做錯了什麼?
我在學習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
表示過程中出現問題,但沒有錯誤消息。我究竟做錯了什麼?
我的第一個猜測是你在一個Windows系統上工作。如果用'dir'代替'ls -l',它應該在windows上工作。
你的代碼工作正常,只是你正在工作的Windows系統。 我更正了您的代碼:
import os
cmd = 'dir'
fp = os.popen(cmd)
res = fp.read()
stat = fp.close()
print res
print stat
它應該在Python 2.7(至少)中起作用。
無論如何,它沒有回答爲什麼它沒有工作(但我認爲這不是一個Python或os.popen()
問題,但另一個更薈萃的事情),但是,從os.popen() doc
:
因爲版本棄用2.6:此功能已過時。使用
subprocess
模塊。特別檢查使用 子過程模塊部分替換舊功能。
如果您使用的是Windows使用dir
代替ls
你想這在Linux吧?只是問問。 ['os.popen()'](https://docs.python.org/2/library/os.html#os.popen)中的 –
:_Deprecated自版本2.6:此功能已過時。使用['subprocess'](https://docs.python.org/2/library/subprocess.html#module-subprocess)模塊。特別檢查使用子流程模塊部分替換舊功能._ – Arount
謝謝大家。我沒想到我的問題得到如此快速的回答。 – Jamie