如何处理从不同目录导入的.py文件的路径?

2024-09-28 03:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我的项目结构如下:

- src/
    - script.py
    - data/
        - tools.py
        - datastuff.py
- data/
    - raw/

script.pydatastuff.py都可以自己运行,它们都导入tools.py。在tools.py中,从我的项目中的其他地方读取文件。例如:

raw_data_path = path.join(os.getcwd(), "../..", "data", "raw")

这在运行datastuff.py时有效,但在运行script.py时无效。在tools.py中引用data/raw/的正确方法是什么,以便它在所有情况下都能工作


Tags: 文件path项目pysrcdatarawos
1条回答
网友
1楼 · 发布于 2024-09-28 03:20:58

我相信你要问的是,你是如何处理这个问题的,你的路径关系是不同的基础上,你在哪里打电话。在这种情况下,一种方法是找到项目父目录,然后将所有文件调用都从该位置移开

鉴于以下项目结构

├── data
│   └── raw
└── src
    ├── data
    │   ├── datastuff.py
    │   └── __init__.py
    ├── __init__.py
    ├── __pycache__
    │   └── __init__.cpython-37.pyc
    └── script.py

确保src文件夹中有一个\uu init \uuuy.py文件。然后将以下代码放入其中

> from pathlib import Path
> 
> def get_project_root() -> Path:
>     """Returns project root folder."""
>     return Path(__file__).parent.parent

然后,在任何文件中,您都可以使用访问顶级文件夹

from src import get_project_root

if __name__ == '__main__':
    root = get_project_root()
    print(root)

您可以使用这些知识从任何目录加载文件,执行以下操作:

from src import get_project_root
import os

if __name__ == '__main__':
    root = get_project_root()
    path_to_raw = os.path.join(root, r"data/raw", "file.txt")
    print(path_to_raw)

相关问题 更多 >

    热门问题