Python运行外部可执行文件

Python运行外部可执行文件,python,python-3.x,windows,Python,Python 3.x,Windows,我正在尝试运行一个外部可执行文件,它需要复杂的参数并在变量中捕获输出。我该怎么做 import os import subprocess subprocess.call('C:\\bin\\test.exe', ' -b10.10.2000',' -house50.20E,10.40N',' -hsyE',' -utc00.18',' -eswe',' -sid27',' -fPls',' -head',' -g') >>> subprocess.call('C:\\bin

我正在尝试运行一个外部可执行文件,它需要复杂的参数并在变量中捕获输出。我该怎么做

import os
import subprocess
subprocess.call('C:\\bin\\test.exe', ' -b10.10.2000',' -house50.20E,10.40N',' -hsyE',' -utc00.18',' -eswe',' -sid27',' -fPls',' -head',' -g')


>>> subprocess.call('C:\\bin\\test.exe', ' -b10.10.2000',' -house50.20E,10.40N',' -hsyE',' -utc00.18',' -eswe',' -sid27',' -fPls',' -head',' -g')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 3
25, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 7
29, in __init__
    raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
>>>
导入操作系统
导入子流程
子进程调用('C:\\bin\\test.exe'、'-b10.10.2000'、'-house50.20E、10.40N'、'-hsyE'、'-utc00.18'、'-eswe'、'-sid27'、'-fPls'、'-head'、'-g')
>>>子进程调用('C:\\bin\\test.exe'、'-b10.10.2000'、'-house50.20E、10.40N'、'-hsyE'、'-utc00.18'、'-eswe'、'-sid27'、'-fPls'、'-head'、'-g')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\subprocess.py”,第3行
25,待命
将Popen(*popenargs,**kwargs)作为p:
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\subprocess.py”,第7行
29,在初始__
raise TypeError(“bufsize必须是整数”)
TypeError:bufsize必须是整数
>>>

谢谢

输出是另一个进程的标准输出吗

您可以使用subprocess.Popen和communicate(),然后:


输出是另一个进程的标准输出

您可以使用subprocess.Popen和communicate(),然后:


好的,酷。那有什么问题?您共享的代码在哪些方面不起作用?请阅读。@Chris,它抛出了一个错误。好的,酷。那有什么问题?您共享的代码在哪些方面不起作用?请阅读。@Chris它抛出了一个错误。我添加了错误消息。我会试试你的建议。出现错误消息的原因是你对“call”的调用是错误的。第一个参数应该是一个列表:[可执行文件,参数1,参数2]。现在表示非法选项-b10.10.2000谁这么说?听起来不像是python子进程错误吗?也许其他可执行文件本身的参数是错误的?修复了这个问题,它不喜欢参数中的空格。我添加了错误消息。我会试试你的建议。出现错误消息的原因是你对“call”的调用是错误的。第一个参数应该是一个列表:[可执行文件,参数1,参数2]。现在表示非法选项-b10.10.2000谁这么说?听起来不像是python子进程错误吗?也许另一个可执行文件本身的参数是错误的?修复了这个问题,它不喜欢参数中的空格。
 proc = subprocess.Popen( [ 'C:\\bin\\test.exe', '-b10.10.2000','-house50.20E,10.40N','-hsyE','-utc00.18','-eswe','-sid27','-fPls','-head','-g' ], stdout = subprocess.PIPE, stderr = subprocess.PIPE )
 out, err = proc.communicate() #out -> stdout, err -> stderr