python 导入的模块使用了相对路径,导致找不到文件错误
直接上实例:
目录结构:
- a # 文件夹
- a.py
- b.py
- config.txt
在 文件夹 a 下有个 a.py,它使用相对路径去读取config.txt的一行数据
def reader():
with open('../config.txt','r') as f:
line = f.readline()
print(line)
if __name__ == '__main__':
reader()
直接运行 a.py , 没问题:
This is first line: hello world!
请按任意键继续. . .
b.py 和 文件夹a 位于同一层路径,在 b.py 中导入了 a.py
from a.read import reader
reader()
运行b.py,报错:提示找不到文件
Traceback (most recent call last):
File "C:\Users\wztshine\Desktop\a\b.py", line 3, in <module>
reader()
File "C:\Users\wztshine\Desktop\a\a\read.py", line 3, in reader
with open('../config.txt','r') as f:
FileNotFoundError: [Errno 2] No such file or directory: '../config.txt'
报错是因为:运行 b.py 时,此时 python 的路径是 b.py 所在文件夹的路径,而不是你以为的 a.py 所在位置的路径。所以系统会认为你想要在 b.py 的目录的外层目录去找 config.txt,肯定找不到,也就报错了。
解决方法:修改 a.py
import os
path = os.path.dirname(__file__) # 先找到当前文件 a.py 所在的目录
path = os.path.dirname(path) # 往上倒一层目录,也就是 config.txt 所在的文件夹
path = os.path.join(path,'config.txt') # 拼接文件的路径
def reader():
with open(path,'r') as f:
line = f.readline()
print(line)
if __name__ == '__main__':
reader()
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构