0

Pythonを介してexeを実行し、ユーザー入力と出力の両方をログファイルにダンプしようとしています。

exeのソースファイル:

//test.c
#include<stdio.h>
void main()
{
    int a=0;
    printf("Enter no:\n");
    scanf("%d",&a);
    printf("You entered %d",a);
}

上記のファイルをコンパイルした後、Pythonでtest.exeを実行しようとしました

#Dumpinputoutput.py
file="log.txt"
fo=open(file, "w")
subprocess.call(["test.exe"],stdout=fo,stderr=fo)
fo.close()

スクリプトを実行すると、

log.txtは次のとおりです。

Enter no:

You entered 54

それ以外の

Enter no:
54
You entered 54

ユーザーの入力もログファイルに含め たいのですが、可能ですか?
subprocess.peopenも試しましたが、同じようになりました。

4

1 に答える 1

0

問題は、ログ ファイルで探しているエコーされた "54" が、実行中の exe ではなく、cmd.exe の機能であることです (cmd.exe の /Q スイッチを参照してください)。

必要なのは、アプリを制御するときに cmd.exe をエミュレートする方法です。WExpect に関する情報については、この回答を参照してください。 Python 用の WExpect があります。

そのパッケージを使用すると、exe とのすべてのやり取りをキャプチャできる端末をエミュレートできます。

于 2012-12-31T21:52:09.487 に答える