1

Windowsシェルプロンプトを介してアプリをインストールするためのpythonスクリプトを作成し、pythonスクリプトを実行しようとしています。app.exe から出力プロンプトが表示され、「続行するには Enter キーを押してください...」というメッセージが表示されます。

キーをシミュレートしようとしましたEnterが、うまくいきません。プロンプトは、ウィザードの次のステップに移動せずにじっと座っています。

この問題をどのように克服しますか?

import subprocess
import win32console

APP_BIN = 'app.exe'

def main():
    proc = subprocess.Popen([APP_BIN,'-i','console'],stdin=subprocess.PIPE,
                                                     stdout=subprocess.PIPE)
    proc.stdin.write("\r\n")            <--- issue
    output = proc.stdout.readline()     <--- issue
    print output
    ret = proc.wait()
    print ret

if __name__ == '__main__':
    main()
4

2 に答える 2

3

Pythonでそれを行う方法は完全にはわかりませんが、私の提案は、実際の「Enter」キーを押すコマンドをシミュレートすることです。コードでは、キャレットの位置を変更しているだけで、適切なリターンを発行していません。

これを見てください:http://win32com.goermezer.de/content/view/136/254/

import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys("{ENTER}", 0) 

それがまさにあなたが必要としているもののようです。

于 2013-02-26T22:54:31.363 に答える
0

以下が機能する可能性があります(テストされていません)。

import subprocess
import win32console

APP_BIN = 'app.exe'

def main():
    proc = subprocess.Popen([APP_BIN,'-i','console'],stdin=subprocess.PIPE,
                                                     stdout=subprocess.PIPE)
    stdoutdata, stderrdata = proc.communicate(input="\r\n")
    output = stdoutdata.readline()
    print output
    ret = proc.wait()
    print ret

if __name__ == '__main__':
    main()
于 2013-02-26T23:13:39.497 に答える