繁体   English   中英

转储外部程序的stdin和stdout

[英]Dump both stdin and stdout of external program

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

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

您需要的是一种在控制应用程序时模拟cmd.exe的方法。 查看此答案以获取有关WExpect的信息: 有适用于Python的WExpect。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM