【问题标题】:How to get a real path of a Python file in Project Directory如何在项目目录中获取 Python 文件的真实路径
【发布时间】:2021-03-21 17:07:35
【问题描述】:

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

C:\Project_Name\Scripts

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

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

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

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

【问题讨论】:

    标签: python-3.x unit-testing automation python-unittest


    【解决方案1】:

    想想这棵树:

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

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

    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 from pathlib import Path os.environ['PROJECT_BASE_DIR'] = str(Path(file).parent) project_path = os.getenv('PROJECT_BASE_DIR')。 split('scripts')[0] 这是一个很好的帮助..谢谢
    【解决方案2】:

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

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

    这也很有效,路径简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 2023-04-05
      • 2017-01-29
      • 1970-01-01
      • 2012-10-22
      • 2020-03-05
      相关资源
      最近更新 更多