欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > python 文件跨目录读取文件

python 文件跨目录读取文件

2025/10/13 18:24:23 来源:https://blog.csdn.net/qq_26086231/article/details/143839554  浏览:    关键词:python 文件跨目录读取文件

假设你的项目结构如下:

pythonProject2/
│
├── config/
│   └── test.yaml           <-- 你的 YAML 配置文件
├── src/
│   └── test_cases/
│       └── test_login.py   <-- 你的测试文件
└── config_read.py           <-- 你封装的 YAML 读取函数

问题分析

在你的测试文件 test_login.py 中,你正在调用 read_yaml(file_path='config'),这会导致问题,因为相对路径不正确,程序无法找到 config 文件。

解决方案

1. 使用相对路径

你可以使用相对路径来访问 config 目录中的 YAML 文件。从 test_login.py 到 test.yaml 的相对路径是 ../../../../config/test.yaml,即从 test_cases/test_login 目录向上返回四级,然后进入 config 目录。

# test_login.py
from config.yaml_read import read_yaml  # 确保正确导入 read_yaml 函数if __name__ == "__main__":yaml_file_path = "../../../../config/test.yaml"  # 相对路径config = read_yaml(file_path=yaml_file_path)print(config)
2. 使用绝对路径(调试时)

为了避免相对路径的问题,你可以使用绝对路径来调试。你可以直接指定 YAML 文件的完整绝对路径:

# test_login.py
from config.yaml_read import read_yamlif __name__ == "__main__":yaml_file_path = "D:/pycharmdome/pythonProject2/config/test.yaml"  # 绝对路径config = read_yaml(file_path=yaml_file_path)print(config)
3. 动态获取项目根目录路径

为了避免硬编码路径,你可以使用 os 模块动态获取项目根目录,并基于根目录构造文件路径。例如:

import os# 获取项目根目录
project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))# 构造 YAML 文件的绝对路径
yaml_file_path = os.path.join(project_root, 'config', 'test.yaml')# 调用 read_yaml 函数
from config.yaml_read import read_yamlif __name__ == "__main__":config = read_yaml(file_path=yaml_file_path)print(config)
4. 检查文件是否存在

在读取文件之前,你可以检查文件是否存在,以确保路径正确:

import osif __name__ == "__main__":yaml_file_path = "../../../../config/test.yaml"  # 相对路径if os.path.exists(yaml_file_path):config = read_yaml(file_path=yaml_file_path)print(config)else:print(f"File not found: {yaml_file_path}")

示例代码

假设你选择使用相对路径,完整的 test_login.py 文件可能如下所示:

# test_login.py
from config.yaml_read import read_yaml
import osif __name__ == "__main__":# 使用相对路径yaml_file_path = "../../../../config/test.yaml"# 检查文件是否存在if os.path.exists(yaml_file_path):config = read_yaml(file_path=yaml_file_path)print(config)else:print(f"File not found: {yaml_file_path}")

总结

  1. 相对路径:使用相对路径时,确保路径相对于运行测试文件的当前工作目录是正确的。
  2. 绝对路径:调试时可以使用绝对路径,以确保路径问题不会影响文件读取。
  3. 动态路径:可以通过 os 模块动态获取项目根目录,并基于根目录构造文件路径。
  4. 文件存在检查:在读取文件之前,使用 os.path.exists() 检查文件是否存在,以避免路径错误导致的异常。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词