3

bashコマンドラインプログラムを実行するpythonスクリプトを作成しようとしています。このプログラムはユーザー入力を 2 回要求しますが、毎回スクリプトで自動的に "1" を入力する必要があります。

次のような話を聞いたことがあります。

os.system("program < prepared_input")

準備された_入力をどのように書くのですか? ありがとう。

4

3 に答える 3

5

次の 2 行でファイルを作成します。

1
1

そしてread、bash スクリプトで使用して入力を取得します。

デモ:

$ cat abc
1
1
$ cat so.sh
#!/bin/bash
read data
echo "You entered $data"
read data
echo "Now you entered $data"
$ bash so.sh <abc
You entered 1
Now you entered 1

パイソン:

>>> import os
>>> os.system("bash so.sh < abc")
You entered 1
Now you entered 1
0
于 2013-07-08T22:33:42.270 に答える
1

pexpect の使用はあなたのために働くでしょう...

ここに解決策があります - http://pypi.python.org/pypi/pexpect/

于 2013-07-09T06:01:39.767 に答える
1

あなたが必要とするあなたの例を機能させると思います:

prepared_input = "<input goes here>"
os.system("program < {0}".format(prepared_input))

しかし、やりたいことによっては、それを達成するためのより良い方法がほぼ確実にあります。何をしているのか、その理由について詳しく教えていただければ、代替案を提案できるかもしれません。

于 2013-07-08T22:36:07.797 に答える