You need to enable JavaScript to run this app. Python运行ex15.py读取同目录ex15_sample.txt报FileNotFoundError
优惠活动
大模型
产品
解决方案
定价
更多

Python运行ex15.py读取同目录ex15_sample.txt报FileNotFoundError

报错核心原因
  • Python 内置的open()函数解析相对路径时,默认参照的是进程当前的工作目录,而非脚本文件本身的存放目录。
  • 你执行脚本时的cmd当前路径为C:\Users\GAMING,传入的文件参数是相对路径ex15_sample.txt,Python 实际会尝试读取C:\Users\GAMING\ex15_sample.txt,但该文件实际存放在C:\MyCodes\PythonCodes\目录下,因此触发文件不存在的报错。
解决方法
  • 适配当前运行环境:先将cmd的工作目录切换到脚本与目标文件的共同存放目录,再执行脚本:
    cd C:\MyCodes\PythonCodes
    py ex15.py ex15_sample.txt
    
  • 绕开路径解析规则:执行时直接传入目标文件的绝对路径,让Python无需参照当前工作目录即可定位文件:
    py C:\MyCodes\PythonCodes\ex15.py C:\MyCodes\PythonCodes\ex15_sample.txt
    
  • 永久优化脚本逻辑:修改代码让脚本自动定位自身所在目录,无论从哪个工作路径启动脚本,都能正常读取同目录下的目标文件。修改后的完整可运行代码如下:
    from sys import argv
    import os
    
    (script, filename) = argv
    # 获取脚本文件的绝对路径,推导同目录的基础路径
    script_dir = os.path.dirname(os.path.abspath(script))
    # 拼接得到目标文件的完整绝对路径
    target_path = os.path.join(script_dir, filename)
    
    txt = open(target_path)
    print(f"Here's your file {filename}:")
    print(txt.read())
    
    print("Type the filename again:")
    file_again = input("> ")
    # 对手动输入的文件名做同样的路径拼接,避免后续读取报错
    user_target_path = os.path.join(script_dir, file_again)
    txt_again = open(user_target_path)
    print(txt_again.read())
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 01:06:05