为何同目录下用相对路径打开pi_digits.txt触发FileNotFoundError?
问题分析与解决
相对路径失败的核心原因
你用相对路径open("pi_digits.txt")失败,本质是Python运行脚本时的「当前工作目录」不是你存放源代码和pi_digits.txt的目录。
举个实际场景:如果你的脚本存在C:\Users\lukas\Documents\python_work\chapter_10里,但你是在桌面打开命令提示符,输入python Documents/python_work/chapter_10/your_script.py来运行,那Python的当前工作目录是桌面,它会去桌面找pi_digits.txt,自然找不到目标文件。
第二个代码失败的双重问题
你写的open("Users\lukas\Documents\python_work\chapter_10")有两个致命问题:
- 这个路径指向的是文件夹,不是具体的
pi_digits.txt文件,open()函数只能打开文件,无法直接读取目录; - Windows路径里的
\是转义字符,直接写\u、\l会被Python解析成特殊字符,实际生成的路径和你预期的完全不符。
让相对路径正常工作的两种方案
切换工作目录后运行脚本
打开终端/命令提示符,先切换到脚本和pi_digits.txt所在的目录:cd C:\Users\lukas\Documents\python_work\chapter_10再运行脚本,此时相对路径就能正确定位到目标文件。
用脚本自身路径构造文件路径
如果不想每次都手动切换目录,可以在脚本里用__file__变量获取当前脚本的绝对路径,再拼接目标文件路径,这样不管在哪运行都能找到文件:import os # 获取脚本所在目录的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接目标文件的完整路径 file_path = os.path.join(script_dir, "pi_digits.txt") with open(file_path) as file_object: contents = file_object.read() print(contents)
内容的提问来源于stack exchange,提问作者Spottvogel
相关产品推荐
相关产品推荐

