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

Python脚本运行后立即关闭,while True未无限循环问题求助

解决你的Python脚本窗口自动关闭问题

我来帮你拆解下问题根源,以及对应的解决办法:

核心原因分析

你遇到的是典型的运行环境差异导致的问题:

  • 在VS Code调试控制台中,程序的工作目录默认是脚本所在文件夹,而且控制台会持续保持打开状态,哪怕程序出现异常也会显示错误信息,所以你能正常循环操作。
  • 但直接双击运行脚本时,Windows系统默认会在脚本执行完成(或崩溃)后立即关闭控制台窗口;另外,脚本的工作目录可能不是你脚本所在的文件夹(比如默认是用户文档目录),这就会引发一些调试时没遇到的隐藏问题。

从你的描述来看,输入值后窗口立即关闭,大概率是程序在处理输入时抛出了未被捕获的异常,导致程序直接退出,而窗口瞬间关闭让你看不到错误信息。当然也有可能是脚本找不到wetter.csv文件(工作目录不匹配),但你调试时正常,所以更偏向是输入处理环节的隐藏异常。

具体解决方案

1. 先确认文件路径与工作目录

确保wetter.csv和你的脚本在同一个文件夹里,或者直接在代码中使用csv文件的绝对路径(避免工作目录差异问题),比如:

# Windows系统示例,替换成你实际的文件路径
with open("C:/Users/你的用户名/Desktop/wetter.csv") as csvfile:
    # 后续代码不变

2. 添加异常捕获与窗口暂停逻辑

在代码中加入异常处理,同时确保程序出现错误或等待输入时,窗口不会立即关闭。修改后的代码如下:

import csv

Liste = []
try:
    # 尝试打开csv文件,捕获文件不存在的情况
    with open("wetter.csv") as csvfile:
        reader = csv.reader(csvfile)
        for row in reader:
            Liste.append(row)
except FileNotFoundError:
    print("错误:找不到wetter.csv文件,请确保文件和脚本在同一目录!")
    input("按回车键关闭窗口...")
    exit()
except Exception as e:
    print(f"发生未知错误:{str(e)}")
    input("按回车键关闭窗口...")
    exit()

while True:
    try:
        date = input("enter date:")
        col = [x[0] for x in Liste]
        if date in col:
            for x in range(0, len(Liste)):
                if date == Liste[x][0]:
                    print(Liste[x])
        else:
            print("no entries for this date. try again")
    except Exception as e:
        print(f"输入处理出错:{str(e)}")
        input("按回车键继续...")

3. 改用命令提示符手动运行脚本

打开命令提示符(cmd),导航到你的脚本所在文件夹,然后运行:

python 你的脚本文件名.py

这样即使程序出现异常,窗口也不会关闭,你能清楚看到错误信息,方便精准排查问题。

额外优化建议

你的代码可以稍微优化下,不用遍历整个列表查找日期,用字典映射会更高效:

import csv

date_data = {}
try:
    with open("wetter.csv") as csvfile:
        reader = csv.reader(csvfile)
        # 把日期作为键,整行数据作为值,后续查找更高效
        for row in reader:
            if row:  # 跳过空行
                date_data[row[0]] = row
except FileNotFoundError:
    print("错误:找不到wetter.csv文件,请确保文件和脚本在同一目录!")
    input("按回车键关闭窗口...")
    exit()

while True:
    date = input("enter date:")
    if date in date_data:
        print(date_data[date])
    else:
        print("no entries for this date. try again")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:17:46