【发布时间】:2019-05-02 06:00:34
【问题描述】:
我不知道如何使用 python 命令启动服务器。
s = subprocess.Popen('"D:\MC SERVER 2k19\server.jar" -jar server.jar java', stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
此代码运行没有错误,但没有在 cmd 中启动服务器。
谢谢。
【问题讨论】:
我不知道如何使用 python 命令启动服务器。
s = subprocess.Popen('"D:\MC SERVER 2k19\server.jar" -jar server.jar java', stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
此代码运行没有错误,但没有在 cmd 中启动服务器。
谢谢。
【问题讨论】:
这与你传递参数的方式有关。
subprocess.Popen(['java', '-jar', 'server.jar'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True, cwd='D:\MC SERVER 2k19')
【讨论】:
如果您需要从 Python 中使用 CMD 进程启动 Java 程序并显示窗口,您可以使用 subprocess 调用打开另一个 CMD 终端并运行命令。
在 Windows 中,您需要在传递给辅助 CMD 进程的路径中对空格进行 CMD 转义。这是用胡萝卜完成的^
proc = subprocess.Popen(
['start', 'cmd', '/k', "D:\\MC^ SERVER^ 2k19\\server.jar",
'-jar', 'server.jar', 'java'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True
)
请记住,您将不能够从 Python 的辅助 CMD 进程中检索任何输出。
即该过程不会返回任何内容。
proc.communicate()
# returns:
(b'', b'')
【讨论】: