Python,无法使用 os.system() 访问 jarfile
Python, unable to access jarfile using os.system()
这是一个 minecraft 服务器,我使用 python 来处理多个服务器文件夹,每个文件夹中都有一个 start.bat。
这就是 start.bat 的样子:
java -Xmx4G -jar server.jar nogui
pause
如果我双击它就可以正常工作,但是,如果我像这样从 python 调用它:
import os
os.system('server\start.bat')
Python 说:'1' 并且 cmd 说:错误:无法访问 jarfile server1.15.jar
我查看了 this post,并尝试了以下操作:
- 在 start.bat
中将 'server.jar' 更改为 'server'
- 已更改目录
- 提供了 start.bat 文件的完整路径
- 检查我路径中的空格(并找到 none)
- 以管理员身份尝试运行文件
None 以上对我有用,有什么线索吗?
编辑2:
我也可以直接从 python 启动 jar 文件,而不使用 bat 文件,但我不知道该怎么做
已解决:
也许这对很多人来说是显而易见的,但我会写下对我有用的东西来帮助遇到同样问题的人。
假设具有以下文件夹结构:
folder\start.py #is the python starter
folder\server\server.jar #is the server jar
folder\server\start.bat #is the server jar starter (java -Xmx1500M -Xms125M -jar server.jar nogui)
当你使用 python 调用 os.system('server\start.bat')
时,它会打开一个新的控制台,这让我认为它是 start.bat cmd
,实际上它不是 python 执行你的folder
目录中的批处理命令。
我发现有两种方法可以解决这个问题,但它们都不是很方便(我想我会制作一个 python 函数来自动执行该过程):
选项一:将 start.bat
文件更改为 java -Xmx1500M -Xms125M -jar server\server.jar nogui
选项二:更改 start.bat
在第一行之前添加 cd server
。
这是一个 minecraft 服务器,我使用 python 来处理多个服务器文件夹,每个文件夹中都有一个 start.bat。
这就是 start.bat 的样子:
java -Xmx4G -jar server.jar nogui
pause
如果我双击它就可以正常工作,但是,如果我像这样从 python 调用它:
import os
os.system('server\start.bat')
Python 说:'1' 并且 cmd 说:错误:无法访问 jarfile server1.15.jar
我查看了 this post,并尝试了以下操作:
- 在 start.bat 中将 'server.jar' 更改为 'server'
- 已更改目录
- 提供了 start.bat 文件的完整路径
- 检查我路径中的空格(并找到 none)
- 以管理员身份尝试运行文件
None 以上对我有用,有什么线索吗?
编辑2: 我也可以直接从 python 启动 jar 文件,而不使用 bat 文件,但我不知道该怎么做
已解决:
也许这对很多人来说是显而易见的,但我会写下对我有用的东西来帮助遇到同样问题的人。
假设具有以下文件夹结构:
folder\start.py #is the python starter
folder\server\server.jar #is the server jar
folder\server\start.bat #is the server jar starter (java -Xmx1500M -Xms125M -jar server.jar nogui)
当你使用 python 调用 os.system('server\start.bat')
时,它会打开一个新的控制台,这让我认为它是 start.bat cmd
,实际上它不是 python 执行你的folder
目录中的批处理命令。
我发现有两种方法可以解决这个问题,但它们都不是很方便(我想我会制作一个 python 函数来自动执行该过程):
选项一:将 start.bat
文件更改为 java -Xmx1500M -Xms125M -jar server\server.jar nogui
选项二:更改 start.bat
在第一行之前添加 cd server
。