python子进程控制台输出 - eclipse调用批处理调用python调用exe

时间:2015-10-01 17:20:57

标签: python eclipse windows batch-file subprocess

我的情况是我希望从eclipse完成工作,所以我使用 eclipse的.launch配置。我试图让它直接运行 python ,但收到错误:error 193 (%1 is not a valid Win32 app)。其中%1可能是我的python脚本。

我决定创建一个简单的批处理脚本来调用这个庞大的 python 动物。

我做了很多组合,发现这是最好的(批输出一些字符串,运行python,等待它,输出一些字符串):

start /b /wait "Python_script.py" "%1" "%2" "%3" "%4" "%5"

直到python本身开始运行exe文件才有效。

我再次尝试了很多组合:

os.system([exe, arg1, arg2, ...])subprocess.call(..)subprocess.check_output(..)

- >我要么没有在eclipse控制台中看到输出,要么输出被延迟,或者在控制台中只有python /或者只有exe的输出。

最后我使用subprocess.Popen(...)并且它几乎是好的 - 唯一的缺点是python脚本的输出不等待exe的进程完成,而当我使用subprocess.Popen(...).wait() exe时输出到控制台,但python脚本的WHOLE输出被延迟,直到'exe'终止。我想只延迟调用exe后写入的pythons脚本输出部分。

  • 如何实现这个'部分控制台输出延迟'是主要话题
  • 关于python和eclipse的建议。发送配置将不胜感激
  • 关于如何理解这些流程(?)之间的沟通的一般建议

谢谢!

1 个答案:

答案 0 :(得分:0)

听起来我觉得你有三个不同的过程,你试图让它们一起工作,你已经尝试了很多东西来让它工作,代码很复杂,你不能轻易发布在这里。这使得很难得到一个好的答案(Stack Overflow在聚焦问题上效果更好),但这是我采取的一般方法:

  1. 如果您尝试直接从命令提示符运行Python_script.py,您的脚本是否会运行?
    • 如果没有,请查看在Windows中注册.py文件类型。
    • 如果确实如此,那么Eclipse启动配置可能不支持或不能正确支持Windows注册的文件类型。应该没有必要弄乱批处理文件和start;只需使用Python_script.py(或类似)替换启动配置中的c:\Python27\python.exe Python_script.py
  2. 从命令提示符处运行脚本 - 能够使用正确的Python和子进程输出运行,并等待所有内容终止。
  3. 如果事情在命令提示符下工作但仍然无法在Eclipse中运行,那么使用一小段代码发布一个新问题,显示您正在尝试的内容以及对错误的描述。 subprocess.callsubprocess.check_outputPopen都有不同的用途,因此除了referring to the documentation之外,很难提供一般性建议。