我有一个 Python 项目,项目根目录中有一个配置文件。需要在整个项目中的几个不同文件中访问该配置文件。
所以它看起来像:/configuration.conf /A/a.py,/A/B/b.py(当b,a.py访问配置文件时)。
什么是获取项目根目录和配置文件路径的最佳/最简单的方法,而不依赖于我所在的项目内的哪个文件?即不使用../../?可以假设我们知道项目根目录的名称。
为了可靠地访问配置文件而无需对相对路径进行硬编码../../,您可以使用 Python 的os和pathlib模块根据当前脚本的目录动态定位项目根目录。无论项目结构中的哪个文件正在运行,此方法都有效。
../../
os
pathlib
您可以按照以下方式操作:
from pathlib import Path # Assuming the project root is named "your_project_name" PROJECT_ROOT_NAME = 'your_project_name' # Get the current file's directory and traverse upwards until the root is found current_path = Path(__file__).resolve() # Find the project root by checking parent directories for parent in current_path.parents: if parent.name == PROJECT_ROOT_NAME: PROJECT_ROOT = parent break # Define the configuration file path relative to the project root config_file_path = PROJECT_ROOT / 'configuration.conf' print(f"Configuration file path: {config_file_path}")
import os # Assuming the project root is named "your_project_name" PROJECT_ROOT_NAME = 'your_project_name' # Get the directory of the current file current_dir = os.path.dirname(os.path.abspath(__file__)) # Traverse upwards until the root is found while os.path.basename(current_dir) != PROJECT_ROOT_NAME: current_dir = os.path.dirname(current_dir) # Define the configuration file path relative to the project root config_file_path = os.path.join(current_dir, 'configuration.conf') print(f"Configuration file path: {config_file_path}")
__file__
通过使用这些方法,您可以确保您的代码能够从项目中的任何脚本中可靠地找到配置文件,而无需担心../../-style 相对路径。