2017-08-07 75 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