web-dev-qa-db-ja.com

python --popenを使用して出力をパイプする方法は?

pipeを使用してファイルをpopen出力したいのですが、どうすればよいですか?

test.py

while True:
  print"hello"

a.py

import os  
os.popen('python test.py')

os.popenを使用して出力をパイプしたいと思います。どうすれば同じことができますか?

8
sami

まず、os.popen()は非推奨になりました。代わりに、サブプロセスモジュールを使用してください。

次のように使用できます。

from subprocess import Popen, PIPE

output = Popen(['command-to-run', 'some-argument'], stdout=PIPE)
print output.stdout.read()
17
atx

subprocess モジュールを使用します。例を次に示します。

from subprocess import Popen, PIPE

proc = Popen(["python","test.py"], stdout=PIPE)
output = proc.communicate()[0]
12
ismail

これにより、出力の最初の行だけが出力されます。

a.py:

import os
pipe = os.popen('python test.py')
a = pipe.readline()
print a

...そしてこれはそれらすべてを印刷します

import os
pipe = os.popen('python test.py')
while True:
    a = pipe.readline()
    print a

(test.pyをこれに変更して、何が起こっているのかを簡単に確認できるようにしました。

#!/usr/bin/python
x = 0
while True:
    x = x + 1
    print "hello",x

3
david van brink