从批处理文件运行交互式Python脚本

从批处理文件运行交互式Python脚本,python,batch-file,interactive,Python,Batch File,Interactive,我想从批处理文件运行一个交互式Python程序。我发现“pythonw.exe或python.exe”这个问题很有帮助,但并不是我想到的所有问题都得到了解决。我决定用con:进行实验 以下说明了我实现的互动类型: Microsoft Windows [Version 10.0.18362.476] (c) 2019 Microsoft Corporation. All rights reserved. c:\sjt\PY\NEWER>type call_py.bat @echo off

我想从批处理文件运行一个交互式Python程序。我发现“pythonw.exe或python.exe”这个问题很有帮助,但并不是我想到的所有问题都得到了解决。我决定用
con:
进行实验

以下说明了我实现的互动类型:

Microsoft Windows [Version 10.0.18362.476]
(c) 2019 Microsoft Corporation. All rights reserved.

c:\sjt\PY\NEWER>type call_py.bat

@echo off
call python c:\sjt\py\newer\testout.py 1>con: 2>con:
c:\sjt\PY\NEWER>type testout.py
print ("Print works if you can see this.")
strwaiter = raw_input ("raw_input prompt: ")
print ("This string was received by strwaiter in response to the prompt: " + strwaiter)

c:\sjt\PY\NEWER>call_py

Print works if you can see this.
raw_input prompt: Here is my response.
This string was received by strwaiter in response to the prompt: Here is my response.

c:\sjt\PY\NEWER>

我再次尝试运行
call_py.bat
,但由于它调用的是
pythonw
,而不是
python
,所以这次尝试没有产生预期的结果

另外,在我的实验过程中,我尝试调用
python
,而不重定向
1
2
。这同样是不成功的

我试图对该问题的相关答案添加评论,但失败了,因为我没有所需的声誉。我现在发布这个问题

  • 我的实验对这个问题的答案有什么补充吗

  • 既然我对那篇文章中给出的技术细节一无所知,为什么在批处理文件中调用
    python
    可以(通过这些重定向)而调用
    pythonw
    却不能


  • PS请参阅
    start/?
    了解启动exe文件的类型的差异

    Windows中有两种类型的程序。图形和控制台,或者说它是控制台和非控制台。区别在于控制台程序会自动获取或继承(如果存在)控制台窗口。从而访问StdIn等(在非控制台世界中不存在)

    程序是否获得控制台由程序文件头中的标志控制

    通常,控制台程序充当控制台程序,但它们没有太多。如果他们愿意,他们可以有窗户

    通常GUI程序不做控制台的事情,但如果他们愿意,他们可以连接到其父控制台并充当控制台程序

    没有任何UI的程序是GUI程序。GUI程序只是意味着没有控制台。如果一个程序想要windows,它必须创建它们

    给你一个主意。如果您要获取记事本的源代码并将其编译为控制台程序(通过更改编译器中的选项)。启动时,控制台窗口将打开(或继承当前窗口),普通记事本窗口将打开。由于记事本没有任何与控制台交互的代码,所以控制台就放在那里

    编写图形程序并将其编译为控制台的一个用途是使用控制台窗口获取调试信息。此外,如果程序崩溃,错误信息会写入控制台(而不是一些需要50次点击才能找到的深埋的问题报告)

    另外需要注意的是,Windows通过窗口与程序完全通信。控制台程序必须有线程来处理消息,并接收非常有限的消息,主要是关于控制台关闭或用户关闭程序的消息

    Windows消息很多。即使没有用户界面的程序通常也会创建一个隐藏窗口来接收消息(如关机、睡眠、壁纸更改、USB驱动器到达、关闭程序等)

    在我有4个应用程序的电脑上,我总共有410个窗口

    这是Microsoft的过程文档