-3

这令人沮丧。我搜索了很多,但没有一个结果对我有帮助。我尝试了子进程,但我仍然无法让它工作。基本上我想让这条线工作:

appName = "ap01"
optna = "-server"
optnb = "-filename=c:/test.VS"
optnc = "-display=1"

os.system('start "VSM" "C:/bin/" {appName, optna, optnb, optnc} ')

在 CMD 中,我只需键入

CD C:/bin/

按回车,然后:

ap01 -server -filename=C:/test.VS -display=1 
4

1 回答 1

0

怎么样:

import os

appName = "ap01"
opts =[
    "-server",
    "-filename=c:/test.VS",
    "-display=1"
]

opts = ' '.join(opts)
os.system(r'start "" "C:\bin\{:}" {:}'.format(appName, opts) )

很难测试,因为我没有 ap01,但可以使用简单的批处理文件。无论如何,您应该像@l4mpi 评论一样使用子流程。所以这样做是:

import subprocess
import os

app=[
    "ap01.ext",
    "-server",
    "-filename=c:/test.VS",
    "-display=1"
]

os.chdir('"C:/bin/')
subprocess.call(app, shell=True)

请注意,这在 Windows 上有点挑剔,因为它需要知道应用程序的全名。至于天气与否,应用程序是否可以通过 esc 终止取决于 ap01 的性质。如果您通过外壳运行它,是的,它将是可终止的,因为外壳仍然存在并且可以终止。如果你管它,那么它可能会也可能不会。您可能应该使用INSTSRV.EXE启动并将其转换为服务

于 2013-09-28T09:42:25.770 回答