专栏首页python3[项目实践] python文件路径引用的

[项目实践] python文件路径引用的

下面是一个获取配置的代码

 1     def getValue(self,section,option):
 2         """
 3         @file: string,the name of the config file
 4         @section: string,the name of the section in config file
 5         @option: string,the name of the option in section field
 6         This function will return a int value which the option is specified.
 7         """
 8         try:
 9             configs = ConfigParser()
10              filepath = sys.path[1] + "\\config\\" + self.filename + ".ini" 
11 #             print (filepath)
12             line = configs.read(filepath)
13             result = configs.getint(section, option)
14             return int(result)
15         except Exception as e:
16             print (e)

在实际引用该段代码时,随着在其它模块中进行引用时,经常会发现提示模块不存在,为防止后面再出现该问题,将 filepath 这个进行优化,不采用 sys.path方法,改为如下:

 1     def getValue(self,section,option):
 2         """
 3         @file: string,the name of the config file
 4         @section: string,the name of the section in config file
 5         @option: string,the name of the option in section field
 6         This function will return a int value which the option is specified.
 7         """
 8         try:
 9             configs = ConfigParser()
10             filepath = "../config/" + self.filename + ".ini"
11 #             print (filepath)
12             line = configs.read(filepath)
13             result = configs.getint(section, option)
14             return int(result)
15         except Exception as e:
16             print (e)

 从上面代码中看到filepath中加了 ../ 就OK了,那么问题来了 :"../" 代表的是上一级目录, "./"代表的是当前目录,那在实际应用场景中我要如何选用该场景。以下实例将为你一一解开:

先给出目录结构:

1、比如我要执行的文件是common.py文件,那这个时候common.py文件是在二级目录里面(performance/common),如果在common.py文件里面要调用 config文件夹下面的getConfig.py去获取配置信息信息,那么common.py就相当于要先跳出当前common目录到前一级performance目录,然后再去找config目录,这样有返回到前一级目录去找其它目录就要用 "../"

2、假如我把common.py文件移动到performance目录下,这个时候执行common.py文件时,它要去调用config文件夹下面的getConfig.py获取配置信息时,由于这个时候 common.py与config 文件夹属于同级(同属于performance目录),去调用同级目录下的文件时自然可以顺利找到,所以就要用 "./"。

简单一句话概括:以要执行的 a.py文件为参考点,如果所要调用的b.py所在文件夹跟 a.py不在同一级目录,则采用 "../",如果在同一级目录,则采用 "./"

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python内置函数4-execfile

    Help on built-in function execfile in module __builtin__:

    py3study
  • python的pyc和pyo文件

    python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pyc和pyo...

    py3study
  • django+uwsgi+nginx部署

      说明:Linux系统内置了python2.7,如果你的Django项目依赖于Python3,请使用pip3 install django安装Python3环...

    py3study
  • Prometheus监控学习笔记之Prometheus监控简介

    Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的。它是一个独立的开放源码项目,并且独立于任何公司。不同于传统的...

    Jetpropelledsnake21
  • Perceptron

    人脑:大脑视觉皮层V1, 包含140,000,000神经元;数百亿个连接, 还有V2,V3,V4,V5,但是人脑进化几千年。

    于小勇
  • Java基础03 构造器与方法重载

    在方法与数据成员中,我们提到,Java中的对象在创建的时候会初始化(initialization)。初始化时,对象的数据成员被赋予初始值。我们可以显式初始化。如...

    Vamei
  • Java基础03 构造器与方法重载

    在Java基础02 方法与数据成员中,我们提到,Java中的对象在创建的时候会初始化(initialization)。初始化时,对象的数据成员被赋予初始值。我们...

    Java团长
  • Marketing Cloud前台UI应用的名称

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.blog....

    Jerry Wang
  • [打造自己的监控系统] Django框架介绍

    由于我不是开发出身,是自学的Python,可能在语法,性能上有所欠缺,特别是惨不忍睹的Web界面,还请谅解,该专题主要是提供思路,如有不妥之处还请提出

    bsbforever
  • 多线程调用的封装技巧

    逍遥剑客

扫码关注云+社区

领取腾讯云代金券