如何在项目目录中获取 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>")
这也很有效,路径简单。
我正在使用具有以下结构的自动化项目
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>")
这也很有效,路径简单。