如何在项目目录中获取 Python 文件的真实路径

How to get a real path of a Python file in Project Directory

我正在使用具有以下结构的自动化项目

C:\Project_Name\Scripts

在脚本文件夹下,我有我的 python 个自动化模块、库和其他所需的数据文件夹。

但我希望这个项目不仅仅局限于C:盘。我应该能够无缝地从任何驱动器、“Project_Name”文件夹的任何父目录执行脚本。

我尝试了以下方法。但是如果我尝试从 jenkins 触发我的测试,它总是不正确的。

os.path.join(os.path.dirname(os.path.abspath(__file__)))

想想这棵树:

Project
 |
 |--Scripts
 |   |
 |   |--__init__.py
 |   |--use_text.py
 |   |--text.txt
 |
 |--run_me.py

假设我们必须在 use_text.py
中获得 text.txt 路径 Step 1. 在run_me.py中获取项目目录路径,并使用os将其保存为环境。 (示例:)

import os
from pathlib import Path
path = Path(__file__).parent # replace it with your preferred library's version
os.environ['PROJECT_BASE_DIR'] = str(path)

from Scripts.use_text import use
use()

现在 use_text.py

import os
text_path = 'Scripts/text.txt'
project_path = os.getenv('PROJECT_BASE_DIR')
text_real_path = os.path.join(project_path, text_path)

def use():
   # do whatever you want with text_real_path

无论项目目录放在哪里,我都有办法获取文件的真实路径。

import os
os.path.join((os.path.realpath(__file__)).split("<Base Directory Name>")[0], "<relative path till the file>")

这也很有效,路径简单。