0

モジュール popen1.py を実行し、サブプロセス モジュールを使用して popen2.py を呼び出します。

しかし、 popen2.py の出力は表示されません..子プロセス id を表示すると、表示されます..popen2.pyの出力はどこに出力されますか

電話

child = subprocess.Popen(['python', 'popen2.py',"parm1='test'","parm='test1'"], shell=True,
                        stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
4

2 に答える 2

1

プロセスが完了した後、データを読み取って取得できchild.stdoutますchild.stderr(合格したためsubprocess.PIPE

oudata,errdata = child.communicate()または、サブプロセスが終了するのを待ってから、文字列として出力するを使用することもできます。


デザインの観点からは、インポートすることをお勧めします。次のようにリファクタリングpopen2.pyします。

#popen2.py
# ... stuff here
def run(*argv):
    #...

if __name__ == '__main__':
    import sys
    run(sys.argv[1:])

次に、popen1.pyにpopen2.pyをインポートして実行できます。

#popen1.py
import popen2
popen2.run("parm1=test","parm=test1")
于 2012-10-23T14:57:42.823 に答える
0

child.stdout/child.stdin を使用して、プロセスと通信できます。

child = subprocess.Popen(['python', 'popen2.py',"parm1='test'","parm='test1'"], shell=True,
                    stdin=subprocess.PIPE,
                     stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print child.stdout.readlines()
于 2012-10-23T15:04:42.837 に答える