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

为何Python文件在VS Code外运行异常?输入后程序直接闪退

问题分析与修复方案

核心问题

程序输入后直接关闭,本质是未处理的异常触发崩溃,具体问题有这些:

  1. 路径转义错误:Windows路径里的\会被Python当成转义字符(比如\D、\F),导致找不到文件,直接触发FileNotFoundError崩溃。
  2. 输入容错缺失:如果用户输入非数字,int(input())会抛出ValueError,程序直接退出。
  3. 文件读取逻辑bug:文件调用read()后指针会跑到末尾,后续再读就拿不到内容;而且原代码里选Part Two时错误调用了Part One的文件。
  4. 逻辑分支不全:用户输入2要退出,但代码没处理这个分支,直接进入循环;也没有退出循环的选项。

修复后的完整代码

print("Example Text")
# 处理start输入的非整数情况
while True:
    try:
        start = int(input("""
To start, press 1.
To leave, press 2."""))
        break
    except ValueError:
        print("请输入1或2!")

# 处理start的退出逻辑
if start == 2:
    exit()
elif start != 1:
    print("无效输入,程序退出")
    exit()

# 用原始字符串避免路径转义,同时预读取文件内容
file_paths = {
    "full": r"Files\Documents\Full.txt",
    "part1": r"Files\Documents\Part 1.txt",
    "part2": r"Files\Documents\Part 2.txt",
    "part3": r"Files\Documents\Part 3.txt"
}

# 读取文件并捕获找不到文件的异常
try:
    with open(file_paths["part1"], 'r', encoding='utf-8') as f:
        part1_content = f.read()
    with open(file_paths["part2"], 'r', encoding='utf-8') as f:
        part2_content = f.read()
    with open(file_paths["part3"], 'r', encoding='utf-8') as f:
        part3_content = f.read()
    with open(file_paths["full"], 'r', encoding='utf-8') as f:
        full_content = f.read()
except FileNotFoundError as e:
    print(f"找不到文件:{e.filename}")
    input("按回车键退出...")
    exit()

# 主循环逻辑
while True:
    print("""Which part do you want to view?
    1. Part One
    2. Part Two
    3. Part Three
    4. All of it
    5. Exit
""")
    # 处理segment输入的非整数情况
    try:
        segment = int(input())
    except ValueError:
        print("请输入1-5之间的数字!")
        continue
    
    # 分支逻辑修复
    if segment == 1:
        print(part1_content)
    elif segment == 2:
        print(part2_content)
    elif segment == 3:
        print(part3_content)
    elif segment == 4:
        print(full_content)
    elif segment == 5:
        print("程序退出")
        break
    else:
        print("无效选项,请重新输入!")
    
    # 输出后暂停,防止内容一闪而过
    input("\n按回车键继续...")

关键修复点说明

  • 路径处理:用r"路径"原始字符串,避免转义字符干扰,确保系统能找到文件。
  • 异常捕获:给输入转换、文件读取加try-except,出错时给出提示,不会直接崩溃。
  • 文件读取优化:用with语句自动关闭文件,提前把内容读到变量里,解决重复读取空内容的问题。
  • 逻辑补全:添加start输入的退出分支,主循环加退出选项,避免无限循环。
  • 暂停提示:每次输出后加input()暂停,尤其是生成exe后,能看清输出内容。

生成exe注意事项

如果用pyinstaller打包,命令用:

pyinstaller --onefile your_script.py

打包完成后,把Files文件夹复制到dist目录下,和exe放在同一层级,不然会找不到文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:35:19