我正在尝试执行以下代码行:
subprocess.call(["java", "-cp", "/home/me/somepath/file.jar", ..., "-someflag somevalue"])
代码失败,我试图运行的 jar 给了我使用信息。但是,如果我展开字符串并将其粘贴到终端中,它就可以工作(我知道我正在正确展开字符串,因为 sh 模块在出错时将它吐回给我)。所以这是 subprocess 或 sh 如何操作的问题。
这是您应该如何使用它的示例:
subprocess.call(["ls", "-l"])
这是描述:
subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
所有调用都需要 args,它应该是一个字符串或一系列程序参数。提供一系列参数通常是首选,因为它允许模块处理任何所需的参数转义和引用(例如,允许文件名中的空格)。如果传递单个字符串,shell 必须为 True(见下文),否则字符串必须简单地命名要执行的程序而不指定任何参数。
http://docs.python.org/2/library/subprocess.html
我不清楚是否应该将列表中的字符串与不同位置的标志和值分开。