2017-08-25 150 views
0

我很新的python我一直在使用popen執行命令,但我期待多行響應,我需要分別使用每一行。Popen多行讀取

我從教程中獲得以下代碼。

pipe = os.popen('dir') 
     for line in pipe: 
      print '--------------space---------------------' 
      print pipe.readLine() 

,但知道我不斷收到以下錯誤:

AttributeError的:「文件」對象有沒有屬性「的readLine」

沒有人對我有什麼建議,或者一個想法如何而是改善這一點。

感謝您的幫助

回答

1

要解決你的語法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() 
+0

實際上,它會用'readline()'很好的運行,但你只能看到其他所有行。 – glibdud

+0

@glibdud不,它不會。親自嘗試一下。您將看到以下內容,並在python 2.7中測試過:'ValueError:混合迭代和讀取方法會丟失數據' –

+0

奇怪的是,我確實嘗試過,它對我來說運行良好。 – glibdud

1

使用子模塊,它有很多有用的功能與其他進程進行交互。 check_output或call會做這個工作

import subprocess 
output = subprocess.check_output('dir', universal_newlines=True)