Python脚本仅在VS Code正常运行,文件夹执行因with open读取txt崩溃怎么办
Python脚本双击运行读取txt文件崩溃问题解决方案
问题根因
该问题核心是运行环境的工作目录与预期不一致导致的:
- 在VS Code中运行时,默认工作目录为你打开的项目根目录,
input.txt刚好在该目录下,因此可以正常读取 - 直接双击脚本运行时,系统分配的工作目录通常不是脚本所在文件夹,程序找不到
input.txt就会抛出未捕获的文件不存在异常,触发直接闪退
修复方案
最优方案:动态拼接文件绝对路径
通过获取脚本自身的绝对路径拼接input.txt路径,无论从什么位置启动脚本都能正确找到文件,同时显式指定编码避免跨系统乱码问题:
import os # 获取当前脚本所在文件夹的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到input.txt的完整绝对路径 input_file_path = os.path.join(script_dir, "input.txt") with open(input_file_path, "r", encoding="utf-8") as test: links = [x.rstrip() for x in test]
增强方案:增加异常捕获避免闪退
如果需要让程序报错时不会直接消失,可添加异常捕获逻辑:
import os script_dir = os.path.dirname(os.path.abspath(__file__)) input_file_path = os.path.join(script_dir, "input.txt") try: with open(input_file_path, "r", encoding="utf-8") as test: links = [x.rstrip() for x in test] except FileNotFoundError: print(f"错误:未在脚本所在目录找到input.txt文件,请检查文件是否存在") input("按任意键退出程序") exit(1)
快速验证方法
如果需要确认是不是路径问题,可在原有代码开头添加如下代码,双击运行后打印的路径就是当前程序的工作目录,对比是否和input.txt所在目录一致即可:
import os print(os.getcwd()) input()
内容的提问来源于stack exchange,提问作者Al3xw4r
相关产品推荐
相关产品推荐

