如何让Python从该子模块的路径运行子模块以获得相对路径?

时间:2019-07-01 20:04:26

标签: python directory path

我有一个文件目录中非常复杂的项目。

    project/
        scripts/
            scriptA.py
            ...
        data/
            A.csv
            ...

scripts\中的文件将修改data\中的内容。实际结构是一个更嵌套和更复杂的结构。由于我要分别测试每个文件,因此目前可以正常工作,但是我想在根目录中包含一个run.py,它将在所有相关脚本中运行。

但是,scriptA.py等都是用相对路径编写的,例如../data/A.csv,这意味着run.py将不会运行。最好的方法是什么?我已经研究过Python的__file__,但仍不确定如何将其用于我的目的。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Python 3,我会这样做:

# This is scriptA.py
from pathlib import Path

script_a = Path(__file__)
scripts_dir = script_a.parent
project_dir = scripts_dir.parent
data_dir = project_dir / 'data'
a_csv = data_dir / 'A.csv'

with a_csv.open():
    # Some work on the file

您可能实际上不会将其分解为一堆不同的变量,我只是为了说明。检出pathlib docs以获得更多信息。