0

キーボード入力を期待するスクリプトがあります。Python で os.system('./script') を使用してそのスクリプトを呼び出すことができます。

別の呼び出しスクリプトからスクリプトに入力を送り返すにはどうすればよいですか?

アップデート:

スクリプトは次のとおりです。

$ cat script
#!/usr/bin/python
for i in range(4):
        name=raw_input('enter your name')
        print 'Welcome %s :) ' % name

forループなしで試してみると動作しますが、スクリプトが終了したときにのみ出力が表示されます。

>>> p = subprocess.Popen('./script',stdin=subprocess.PIPE)
>>> p.communicate('navras')
enter your nameWelcome navras :)

foor ループで試してみると、エラーがスローされます。新しい print ステートメントで stdout が更新されたときに、インタラクティブなステートメントを表示する方法

>>> p.communicate('megna')
enter your nameWelcome megna :)
enter your nameTraceback (most recent call last):
  File "./script", line 3, in <module>
    name=raw_input('enter your name')
EOFError: EOF when reading a line
(None, None)
4

2 に答える 2

1

os.system の代わりに subprocess を使用できます。

p = subprocess.Popen('./script',stdin=subprocess.PIPE)
p.communicate('command')

それはテストではない

于 2010-07-16T11:25:13.107 に答える
-2

実際、os.system と os.popen は現在非推奨であり、subprocess はすべてのサブプロセスの相互作用を処理するための推奨される方法です。

于 2010-07-16T11:27:09.297 に答える