首页 > 编程问答 >在Python中通过绝对路径引用数据文件夹

在Python中通过绝对路径引用数据文件夹

时间:2024-07-30 03:48:27浏览次数:12  
标签:python path

我有一个大型 python 项目,其中数据太大,无法每次都以相同的方式共享。不同的人可能会使用网络位置或将某些内容复制到本地驱动器。该路径由不同子文件夹中的脚本和笔记本使用。

例如,我将创建一个 config.py 来定义数据文件夹的路径。

import sys
sys.path.append('../')
from config import DATA_PATH

这有效 直到 我重新组织一个项目然后我发现自己在数点并浏览每个笔记本。有没有一种方法可以不使用绝对路径来可靠地获取项目文件夹中的配置,从而允许我组织子文件夹,这些子文件夹有时可以是另一层深度而不更改所有文件?

project/
├── __init__.py
├── config.py
├── scripts/
│   ├── __init__.py
│   └── some_script.py
└── notebooks/
    ├── __init__.py
    └── some_notebook.ipynb

你可以使用 Python 的 os.path 模块,结合一些相对路径技巧,从你的项目中的任何位置可靠地获取你的配置文件。

以下是方法:

  1. 使用 __init__.py 文件使你的目录成为包。 这使得 Python 可以将你的 project 目录及其子目录识别为包。

  2. 在你的 config.py 中定义 DATA_PATH 你可以使用 os.path.abspath(__file__) 获取 config.py 文件的绝对路径,然后导航到你的数据目录。

```python import os

# 获取 config.py 的目录路径 CONFIG_DIR = os.path.dirname(os.path.abspath( file ))

# 定义数据路径 - 这里假设数据目录与 config.py 在同一级别 DATA_PATH = os.path.join(CONFIG_DIR, 'data') ```

  1. 从你的脚本和笔记本中导入 DATA_PATH 现在你可以从你的项目中的任何位置导入 config 模块,并访问 DATA_PATH

```python from project.config import DATA_PATH

# 在你的脚本或笔记本中使用 DATA_PATH print(f"正在从 {DATA_PATH} 加载数据...") ```

示例:

project/ init .py (此文件为空)

project/config.py

import os

CONFIG_DIR = os.path.dirname(os.path.abspath(__file__))
DATA_PATH = os.path.join(CONFIG_DIR, 'data')

project/scripts/some_script.py

from project.config import DATA_PATH

print(f"正在从 {DATA_PATH} 加载数据...")

project/notebooks/some_notebook.ipynb

from project.config import DATA_PATH

print(f"正在从 {DATA_PATH} 加载数据...")

优点:

  • 无需绝对路径: 你的代码现在引用项目的根目录,使其可移植。
  • 组织有序: 你可以自由地重构项目结构,而无需更新每个文件的路径。
  • 可读性: 导入 config.DATA_PATH 使你的代码更易于理解和维护。

使用此方法,你可以确保你的项目始终可以找到你的数据目录,无论项目的内部结构如何。

标签:python,path
From: 78808533

相关文章

  • python三天速成记(看完你就会)day3 满满干货~
    续上文啦~EXCEL表的操作上一篇文章讲了怎么读取和操作txt和csv文档,但其实我们生活中还有一个常用的文本格式那就是excel文件,特别是在对大量数据进行处理的时候。excel文件的用处和广泛。其实在python中有很多库可以处理excel文件,但是本文主要介绍使用最实用最广泛的库pan......
  • Python输入验证改进的其他方式
    题目[题目来源:Python编程快速上手——让繁琐工作自动化(第二版)第三章实践项目,下面的解答程序为我自己完成的,仅供参考。]编写一个名为collatz()的函数,他有一个名为number的参数。如果参数是偶数,那么collatz()就输出number//2,并返回该值。如果参数是奇数,那么collatz()就......
  • Python的PyInputPlus模块
    PyInputPlus模块简介PyInputPlus模块的功能:PyInputPlus模块是一个Python第三方模块,需要自己对它进行安装。包含与input()函数类似的、用于多种数据(如日期、数字、电子邮箱地址等)的函数。如果,用户输入了无效的内容,例如格式错误的日期或超过预期范围的数字,那么PyInputPlus模......
  • 用Python实现二进制搜索(二分查找)
    二进制搜索(binarysearch,又称二分搜索)是一种快速有效的搜索方法,用于搜索有序列表中的元素。importmathdefbinary_search(sorted_list,target):"""在有序列表sorted_list中查找目标值target的位置使用二分查找算法"""lower_bound=0#初始......
  • 超详细Python教程——使用Hexo搭建自己的博客
    使用Hexo搭建自己的博客对于一个程序员来说,搭建一个属于自己的博客平台是非常有意义的事情。首先,博客可以记录自己的成长历程,也是对自己一段时间学习和工作的总结和沉淀;其他,通过博客可以营销自己,增强自己在互联网或行业内的影响力,为将来更好的职业生涯打一个坚实的基础。前......
  • 超详细Python教程——玩转PyCharm
    玩转PyCharmPyCharm是由JetBrains公司开发的提供给Python专业的开发者的一个集成开发环境,它最大的优点是能够大大提升Python开发者的工作效率,为开发者集成了很多用起来非常顺手的功能,包括代码调试、高亮语法、代码跳转、智能提示、自动补全、单元测试、版本控制等等。此外,P......
  • 2024年华为OD机试真题-找出作弊的人-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】  题目描述公司组织了一次考试,现在考试结果出来了,想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,......
  • Shopee虾皮api python获取虾皮购物平台的商品数据信息 数据采集
    虾皮购物(英语:Shopee)是一个电商平台,总公司设在新加坡,归属于SeaGroup(之前称之为Garena),该企业于2009年由李小冬(ForrestLi)创办。虾皮购物于2015年初次在新加坡推出,现阶段已拓展到马来西亚、泰国、印度尼西亚、越南和菲律宾。虾皮购物为全球华人地区的客户提供线上购物和销售......
  • 2024华为OD机试真题- 亲子游戏Python-C卷D卷-200分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)题目描述宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。游戏规则是妈妈必须在最短的时间(每个单位时间只能走一步)到达宝宝的位置,路上......
  • 11. 2 用Python开发一个简单的Web服务器
    用Python开发一个简单的Web服务器11.2用Python开发一个简单的Web服务器11.2.1需求分析11.2.2系统设计11.2.3详细设计11.2.4实现11.2.5测试11.2.6部署和维护11.2.7文档和帮助文档11.2.8用户反馈11.2用Python开发一个简单的Web服务......