python子流程控制台输出-eclipse调用批处理调用python调用exe
我想从eclipse完成工作,所以我使用eclipse的.launch配置。我试图使其直接运行python,但出现错误:python子流程控制台输出-eclipse调用批处理调用python调用exe,python,eclipse,windows,batch-file,subprocess,Python,Eclipse,Windows,Batch File,Subprocess,我想从eclipse完成工作,所以我使用eclipse的.launch配置。我试图使其直接运行python,但出现错误:错误193(%1不是有效的Win32应用程序)。其中%1可能是我的python脚本 我决定创建一个简单的批处理脚本,调用这个大型的野生python动物 我做了很多组合,发现这是最好的(批处理输出一些字符串,运行python,等待它,然后再次输出一些字符串): 它一直工作到python本身开始运行exe文件 我又一次尝试了很多组合: os.system([exe,arg1,arg
错误193(%1不是有效的Win32应用程序)
。其中%1可能是我的python脚本
我决定创建一个简单的批处理脚本,调用这个大型的野生python动物
我做了很多组合,发现这是最好的(批处理输出一些字符串,运行python,等待它,然后再次输出一些字符串):
它一直工作到python本身开始运行exe文件
我又一次尝试了很多组合:
os.system([exe,arg1,arg2,…])
和
子流程调用(..)
和子流程检查输出(..)
->我要么在eclipse控制台中没有看到输出,要么输出被延迟,要么控制台中只有python/或exe的输出
最后,我使用了subprocess.Popen(…)
,这几乎是正确的-唯一的缺陷是python脚本的输出不等待exe的进程完成,而当我使用subprocess.Popen(…).wait()
exe将输出传递到控制台,但python脚本的整个输出将延迟到“exe”终止为止。我只想延迟调用exe后写入的Python脚本输出部分
- 如何实现这种“部分控制台输出延迟”是主要的主题
- 关于python和eclipse.launch配置的建议将不胜感激
- 对于如何在这些流程之间进行沟通的一般建议,我们将不胜感激
谢谢 在我看来,你有三个不同的过程要一起工作,你已经尝试了很多东西来让它工作,而且代码非常复杂,你不能轻易地把它发布到这里。这使得很难得到一个好的答案(堆栈溢出在有重点的问题上效果更好),但以下是我将采取的一般方法:
Python\u script.py
,脚本是否运行?
- 如果没有,那么研究在Windows中注册.py文件类型
- 如果是,那么Eclipse启动配置可能不支持或不正确支持Windows注册的文件类型。不需要乱处理批处理文件和
;只需将启动配置中的start
替换为Python\u script.py
(或类似)c:\Python27\Python.exe Python\u script.py
subprocess.call
,subprocess.check\u output
,以及Popen
都有不同的用途,因此除了简单地给出建议外,很难给出一般性的建议在IIRC中,Eclipse使用管道化stdin和stdout运行进程。当stdout是管道或文件时,有些程序会缓冲其输出。您可以运行
python.exe-u python\u script.py…
至少防止python缓冲其标准输出。请尝试使用start”“/b/wait”python\u script.py“%1”“%2”“%3”“%4”“%5”
(注意附加的”
);否则,start
命令可能会将第一个(带引号的)字符串解释为窗口标题,而不是程序(在您的例子中是“Python\u script.py”
)。-u选项适用于我!!1.是的。我尝试了eryksun在评论中提出的方法,因此在eclipse启动配置中,我放置了类似于“C:\Python34\python.exe C:\path\u to\u script\python\u script.py arg1 arg2 arg3”的内容,但输出与调用批处理调用python时的输出相同-这并不是我想要的\n'2。当我直接从CMD运行该脚本时,该脚本工作正常:“python python_script.py arg1 arg2 arg3”或“python arg1 arg2 arg3”(因此,wait函数使python脚本等待直到exe终止,但它不会在调用exe之前延迟脚本的输出。
start /b /wait "Python_script.py" "%1" "%2" "%3" "%4" "%5"