我有一个格式保存文件和命令行参数的路径,以便在Windows中打开这些文件时传递给这些文件。
例如,我可能有一个javascript文件的路径和一个命令行参数列表来传递它,在这种情况下我想以与os.startfile相同的方式打开javascript文件并传递给它命令行参数 - 因为参数保存为字符串我想将其作为字符串传递,但如果需要,我也可以将其作为列表传递。
我不太确定我应该使用什么,因为.js不是可执行文件,因此会在Popen中引发错误,而startfile只将动词作为第二个命令。
此问题可以扩展到需要打开的任意数量的文件扩展名,并传递命令行参数,但在打开时将由真正的可执行文件解释。
答案 0 :(得分:2)
如果windows已将.js扩展名注册为使用wscript打开,则可以将该决定留给windows shell。
您可以使用os.system()执行与在命令提示符下键入时相同的操作,例如:
import os
os.system('example.js arg1 arg2')
您还可以使用start
命令:
os.system('start example.js arg1 arg2')
如果您需要更多功能,例如获得结果,可以使用subprocess.Popen(),但请务必使用shell=True
(以便shell可以调用正确的应用程序):
from subprocess import Popen
p = Popen('example.js arg1 arg2', shell=True)
# you can also do pass the filename and arguments separately:
# p = Popen(['example.js', 'arg1', 'arg2'], shell=True)
stdoutdata, stderrdata = p.communicate()
(虽然这可能需要cscript而不是wscript)
如果Windows没有任何默认应用程序来打开文件(或者如果它不是你想要的那个),那么,你当然可以自己...