如何在Python的subprocess调用exe时添加控制台额外参数?
解决subprocess添加命令行参数的问题
嘿,我明白你的需求啦!你现在用subprocess.Popen运行exe文件时,想加上控制台里用到的额外参数对吧?其实问题出在你原来的参数列表写法上,咱们来调整一下:
首先,你原来的代码里把exe路径和文件路径放在了同一个字符串里,这是不对的——subprocess.Popen的第一个参数需要是每个命令行元素单独作为列表项,就像你在控制台里用空格分隔它们一样。
比如你在控制台里的命令是:
'exe location' 'file location' option
那对应的Python代码应该改成这样:
result = subprocess.Popen( ['exe location', 'file location', 'option'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE ).communicate()[0]
举个更具体的例子,如果你的exe路径是C:/tools/myapp.exe,文件路径是D:/data/test.txt,额外参数是--debug,那代码就是:
import subprocess output = subprocess.Popen( ['C:/tools/myapp.exe', 'D:/data/test.txt', '--debug'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE, text=True # 如果想直接得到字符串而不是字节流,可以加这个参数 ).communicate()[0] print(output)
额外说明:
- 如果你的参数是带值的(比如
--output log.txt),也要拆成两个列表项:['exe路径', '文件路径', '--output', 'log.txt'] - 路径里有空格也不用手动加引号,
subprocess会自动处理好,比如'C:/Program Files/myapp.exe'直接放在列表里就行
这样修改后,应该就能和你在控制台运行的效果完全一致啦!
内容的提问来源于stack exchange,提问作者user8560167
相关产品推荐
相关产品推荐

