与os.popen相关的问题
问题描述:
我在学习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