在Python中向可执行文件传递参数

6

我正在使用os.startfile('C:\\test\\sample.exe')来启动应用程序。我不想知道应用程序的退出状态,只想启动exe文件。

我需要传递参数给这个exe,例如'C:\\test\\sample.exe' -color

请建议在Python中运行此操作的方法。


使用 os.system("command") - Hackaholic
2个回答

10

在我所知道的所有情况下,您应该使用 subprocess 模块,而不是 os.startfileos.system

import subprocess
subprocess.Popen([r'C:\test\sample.exe', '-color'])

正如评论中@Hackaholic所建议的,您可以执行。

import os
os.system(r'C:\test\sample.exe -color')

但这并不简单,os 的文档推荐使用 subprocess


子进程正在等待新的exe完成,但我的目标只是启动新的exe。以下代码无效。os.system(r'c:\Program Files\bin\winx64\sample.exe -b -color')。 - Bala
@Bala 啊,对了,忘记了 os.startfile 会在新进程中打开。我已经编辑了我的答案;如果你不想让调用阻塞,应该使用 subprocess.Popen - senshin
@Bala 注意:你应该使用双斜杠 'C:\\foo' 或原始字符串 r'C:\foo'。不要同时使用两者,否则你的文件路径中会有太多反斜杠。这可能是你评论中的 os.system 调用失败的原因。 - senshin
以下选项无法正常工作,请建议: subprocess.Popen(['C:\ data \ ANSYS.exe -b -i cdb_wb.txt']) subprocess.check_call([r'C:\ data \ ANSYS.exe','-b -i cdb_wb.txt']) - Bala
@Bala 你应该将每个标志和参数分开传递,这样你的参数列表看起来像 [r'C:\data\ANSYS.exe', '-b', '-i', 'cdb_wb.txt']。如果这对你不起作用,请提一个新问题 - senshin

0
创建一个批处理文件sam_ple.bat,其中包含以下命令和参数。
cd C:\test\
start sample.exe -color

然后将sam_ple.bat放在与您的script.py文件相同的目录中

在Python中输入以下代码行以启动exe:

os.startfile('.\sam_ple.bat')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接