转储外部程序的stdin和stdout

时间:2012-12-31 17:34:29

标签: python cmd stdout stdin

我正在尝试通过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,但是也一样。

1 个答案:

答案 0 :(得分:0)

问题是您在日志文件中查找的回显“54”是cmd.exe的函数,而不是您正在运行的exe(请参阅cmd.exe上的/ Q开关)。

您需要的是在控制应用时模拟cmd.exe的方法。有关WExpect的信息,请查看此答案:There is WExpect for Python.

该软件包将允许您模拟终端,该终端应该允许您捕获与exe的所有交互。