0

単純なユースケースのように思われるものがあります。コマンドプロンプトからエミュレーターを実行するスクリプト (python または bash) を起動し、ctrl-c を入力するか終了するまでエミュレーターがコマンドを実行します。これと同じことをシェルから実行したいのですが、以下のコードが機能しません。私がやろうとしているのはテストの自動化であるため、コマンド シェルからアプリケーションに直接コマンドを発行したいと考えています。Pythonでは、次のものがあります。

    import os 
    import subprocess

    command = ['/usr/local/bin/YCTV-SIM.sh', '-Latest'] #emulator for yahoo widgets
    process = subprocess.Popen( command, shell=True, stdin=subprocess.PIPE )

    time.sleep(12) #wait for launch to finish
    print '/widgets 1' #first command to issue
    print '/key enter' #second command to issue

    process.wait()

ご覧のとおり、これはかなり単純なものです。コマンド シェルから「YCTV-SIM.sh」を起動すると、入力モードになり、キー エントリがアプリケーション シェルに送信されます (YCTV-SIM.sh は生の入力を読み取ります)。テキストをこのアプリケーション シェルに直接パイプします。これまでのところ、何も起こりません。テストはコンソール ウィンドウに出力されますが、発行しようとしたコマンドにアプリケーションが応答しません。それが問題であれば、私はpython 2.6.3を使用していますが、Pythonは必要ありません..

この時点では言語は重要ではないため、PERL、Python、Bash、TCL など、あなたが提案できるものは何でも役に立ちます。

4

1 に答える 1

1

stdin子プロセスをリダイレクトして書き込む必要があります。例を参照してくださいsubprocess.Popen.communicate

于 2013-02-12T01:42:50.473 に答える