Popen多行读取
问题描述:
我很新的python我一直在使用popen执行命令,但我期待多行响应,我需要分别使用每一行。Popen多行读取
我从教程中获得以下代码。
pipe = os.popen('dir')
for line in pipe:
print '--------------space---------------------'
print pipe.readLine()
,但知道我不断收到以下错误:
AttributeError的:“文件”对象有没有属性“的readLine”
没有人对我有什么建议,或者一个想法如何而是改善这一点。
感谢您的帮助
答
要解决你的语法readline
使用L的小写。
但是,我想知道你在做什么。如果你只是想打印每一行,那么你应该改变print pipe.readline()
- >print line
。
import os
pipe = os.popen('dir')
for line in pipe:
print '--------------space---------------------'
print line
你for
循环已经在读通过线输出线从popen
。事实上,如果您尝试在中期迭代中调用pipe.readline()
,那么这是非法的,您的代码将引发异常。
为了说明您可以尝试运行此异常:
import os
pipe = os.popen('dir')
for line in pipe:
print '--------------space---------------------'
print pipe.readline()
答
使用子模块,它有很多有用的功能与其他进程进行交互。 check_output或call会做这个工作
import subprocess
output = subprocess.check_output('dir', universal_newlines=True)
实际上,它会用'readline()'很好的运行,但你只能看到其他所有行。 – glibdud
@glibdud不,它不会。亲自尝试一下。您将看到以下内容,并在python 2.7中测试过:'ValueError:混合迭代和读取方法会丢失数据' –
奇怪的是,我确实尝试过,它对我来说运行良好。 – glibdud