Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 转储外部程序的stdin和stdout_Python_Cmd_Stdout_Stdin - Fatal编程技术网

Python 转储外部程序的stdin和stdout

Python 转储外部程序的stdin和stdout,python,cmd,stdout,stdin,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); } 在执行脚本时 log.txt是: Enter no: You entered 54 Enter no: 54 You

我试图通过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);
}
在执行脚本时

log.txt是:

Enter no:

You entered 54
Enter no:
54
You entered 54
而不是

Enter no:

You entered 54
Enter no:
54
You entered 54
我希望用户的输入也包含在日志文件中,是否可能?
我也尝试了subprocess.peopen,但得到了相同的结果。

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

您需要的是一种在控制应用程序时模拟cmd.exe的方法。有关WExpect的信息,请参阅此答案:


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

正是这样做的,但在Windows上不可用(除了可能通过),并且不是Python。@PhilFrost:我安装了cygwin,它没有脚本命令,我尝试通过setup.exe-q-p script安装该命令。。但它仍然显示未找到命令??