在 Windows 上从 python 运行星露谷物语

Posted

技术标签:

【中文标题】在 Windows 上从 python 运行星露谷物语【英文标题】:Running Stardew Valley from python on Windows 【发布时间】:2018-11-23 16:26:00 【问题描述】:

目前我正在尝试通过这样做从 python 运行 Stardew Valley:

import subprocess
subprocess.call(['cmd', 'D:\SteamR\steamapps\common\Stardew Valley\Stardew Valley.exe'])

但是,这会失败并且只会打开一个 CMD 窗口。我对如何从 python 启动程序有基本的了解,但我不明白如何专门打开不仅位于不同位置而且位于不同驱动器上的程序。

任何帮助将不胜感激。谢谢!

编辑:

这是在 Windows 10 上

Stardew Valley 版本是测试版,位于 D:/ 驱动器上(windows 当然是在 C:/ 上)

【问题讨论】:

Python2 还是 Python3? python3 将编辑标签@davedwards 我目前无法访问 Python3 系统进行测试,但此评论建议使用 subprocess.run ***.com/questions/89228/… 所以在您的情况下,删除 'cmd' 参数并仅传递.exe的路径 可以给我们一个Stardew Valley标签吗? 能否提供更多关于您的操作系统、Python 版本以及星露谷物语版本的详细信息? 【参考方案1】:

你不必使用cmd,你可以直接启动.exe

此外,您应该知道\ 用于转义 Python 字符串中的字符,但不应在 Windows 路径中专门解释。对于 Windows 路径,最好使用前缀为 r 的原始字符串,这会禁用此类转义:

import subprocess
subprocess.call([r'D:\SteamR\steamapps\common\Stardew Valley\Stardew Valley.exe'])

【讨论】:

这样做表示使用代码完成了进程而没有实际运行程序【参考方案2】:

你可以尝试使用游戏的appid使用steam命令行吗:

subprocess.call(r"C:\Program Files (x86)\Steam\Steam.exe -applaunch 413150")

您可以在桌面快捷方式属性的“Web 文档选项卡”中找到应用 ID (可以通过右键单击并选择在steam库中创建桌面快捷方式来生成)。 会是这样的 steam://rungameid/413150

【讨论】:

steam://run/413150,至少在 macOS 上 @AndrewMorozko 这也适用于 Windows,类似于:subprocess.run("cmd /c start steam://run/413150")subprocess.run("start steam://run/413150", shell=True)【参考方案3】:

您可以使用以下方式:

import os
os.startfile("D:\SteamR\steamapps\common\Stardew Valley\Stardew Valley.exe")

这段代码的作用是,它只是使用分配给它的窗口的默认程序打开文件

这种启动方式的一个缺点是它不会返回任何进程对象。因此,为了管理进程,您需要使用 win32 包或其他包。

【讨论】:

以上是关于在 Windows 上从 python 运行星露谷物语的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上从 pygraphviz 运行neato

如何在 wsl2 上从 python3 运行 Selenium ChromeDriver?

无法在 Windows 上从 Python 连接到 MSSQL Server

ImportError : 无法在 linux 上从 <module> 导入名称 <method>

在 Windows 7 上从 emacs 运行 nmake

在 Windows 上从 Apache CGI 运行 gswin64c