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
相关产品推荐
相关产品推荐

