为什么Python项目中的相对路径会导致文件未找到错误?

Barbara Streisand
发布: 2024-11-01 11:39:02
原创
516 人浏览过

Why Do Relative Paths in Python Projects Lead to File Not Found Errors?

在 Python 项目中使用相对路径访问文件

在 Python 项目中操作文件时,为了方便起见,通常使用相对路径。然而,它们的行为可能变得不明确,特别是在处理多级项目结构时。

考虑以下项目布局:

project
    /data
        test.csv
    /package
        __init__.py
        module.py
    main.py
登录后复制

模块 module.py 尝试读取 . ./data/test.csv 使用相对路径,但是在运行 main.py 时,出现错误,指示找不到该文件。这种明显的不一致源于这样一个事实:根据脚本的执行位置,相对路径的解析方式不同。

对于 __init__.py 和 module.py,路径是相对于包含这些的目录进行评估的文件。然而,对于 main.py 来说,路径是相对于它自己的位置的。

解决路径歧义

要解决这种歧义,可以使用绝对路径。或者,更优雅的方法是利用 Python 的 __file__ 属性:

<code class="python">from pathlib import Path

path = Path(__file__).parent / "../data/test.csv"

with path.open() as f:
    test = list(csv.reader(f))</code>
登录后复制

此技巧依赖于 Python 3.4 pathlib 模块,并根据当前脚本的位置构造绝对路径。

支持较旧的 Python 版本

如果仍在使用低于 3.4 的 Python 版本,另一种方法涉及操作当前路径:

<code class="python">import csv
import os.path

my_path = os.path.abspath(os.path.dirname(__file__))
path = os.path.join(my_path, "../data/test.csv")

with open(path) as f:
    test = list(csv.reader(f))</code>
登录后复制

此方法将 os.path 函数结合到达到与基于 pathlib 的方法相同的结果。

以上是为什么Python项目中的相对路径会导致文件未找到错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!