2017-08-25 6 views
0

私はかなりpythonに新しいです。私はコマンドを実行するためにpopenを使用していますが、私は複数のライン応答を期待しており、私は別々に各ラインを使用する必要があります。Popenマルチライン読み取り

私はチュートリアルから得た以下のコードを持っています。

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

しかし、私は次のエラーを得続ける知っている:

はAttributeError:「ファイル」オブジェクトには属性がありません「のreadLine」

誰も私に何かアドバイス、またはどのようにのアイデアを持っているんむしろこれを改善する。 readlineは小文字のLを使用して、あなたの構文を修正するために、任意の助けを

おかげ

答えて

1

しかし、私はあなたが達成しようとしていることを知りたいと思います。各行を印刷するだけの場合は、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) 
関連する問題