You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python程序内部实现自重启?文本冒险游戏重启报错求助

解决Python控制台游戏重启时的OSError: [Errno 8]问题

错误原因

OSError: [Errno 8] 是执行格式错误,本质是你直接将Python脚本路径作为os.execv的第一个参数,但Python脚本本身并非可执行文件(除非添加了shebang头且赋予执行权限),系统无法直接执行它,必须通过Python解释器来启动。

修复方案

方案1:使用Python解释器路径重启(推荐)

用sys.executable获取当前运行的Python解释器绝对路径,将其作为执行程序,脚本路径作为参数传入,跨平台兼容性更强:

import sys
import os

def gameover():
    print("""
     _____                            _____
    /     \                         / \     \
    |                              /   \     \
    |  _____   __            __   |     \     |        __    _
    |      |  /  \|  |/\/\  /__\   \     \   /   \  / /__\ |/ )
    \\_____/   \\__/|  | | |  \\__.    \\ ____\\ /     \/  \\__. |   
    """)
    print("> Restart  > Quit")
    x = input().lower().strip()
    if x == "restart":
        sys.stdout.flush()
        # 用Python解释器重启脚本
        os.execv(sys.executable, [sys.executable] + sys.argv)
    else:
        sys.exit()

方案2:用subprocess启动新进程后退出当前进程

如果os.execv仍有问题,可以尝试用subprocess.Popen启动新的游戏进程,再退出当前进程:

import sys
import os
import subprocess

def gameover():
    print("""
     _____                            _____
    /     \                         / \     \
    |                              /   \     \
    |  _____   __            __   |     \     |        __    _
    |      |  /  \|  |/\/\  /__\   \     \   /   \  / /__\ |/ )
    \\_____/   \\__/|  | | |  \\__.    \\ ____\\ /     \/  \\__. |   
    """)
    print("> Restart  > Quit")
    x = input().lower().strip()
    if x == "restart":
        sys.stdout.flush()
        # 启动新进程
        subprocess.Popen([sys.executable] + sys.argv)
        # 退出当前进程
        sys.exit()
    else:
        sys.exit()

注意事项

  • 确保在控制台直接运行脚本,而非IDE(PyCharm、VS Code等IDE的运行环境可能会修改sys.argv,导致路径异常)。
  • 如果是Linux/macOS系统,也可以给脚本添加shebang头(#!/usr/bin/env python3)并赋予执行权限(chmod +x your_script.py),但用sys.executable的方法跨平台兼容性更好。

内容的提问来源于stack exchange,提问作者Kade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:50:25