2017/07/11 Python:os.path模块

抛出问题:

当我们部署我们的代码的时候,会遇到一种情况,之前在配置文件中所有的文件路径都写成了绝对路径,基于你个人笔记本操作系统的用户路径,这样的话,当更换了其他电脑的时候,这个路径是无法复用的,所以产生了一个想法,利用os.path模块获取当前文件所处的父目录的绝对路径(其实就是你项目根目录的绝对路径),然后在配置文件中只需要写每个需要用到的模块的相对路径即可,然后把父目录的绝对路径和各模块的相对路径做一次拼接,这样就可以实现上述问题的解决了~

config_file_path = os.path.split(os.path.realpath(__file__))[0]    # 1:获取当前文件所处文件夹的绝对路径

config_file_path = os.path.dirname(os.path.dirname(__file__))  #2:当前文件父目录的绝对路径

config_file_path = os.path.dirname(os.path.realpath(__file__))  #3:当前文件所处文件夹的绝对路径,等同于第1种写法

例子1:

import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) #获取当前文件夹的父目录绝对路径

print(BASE_DIR)

file_path = os.path.join(BASE_DIR,'C','Test_Data') #获取C文件夹中的的Test_Data文件


例子2:

class GlobalParam():

def __init__(self,folder,file):

self.BASE_DIR = os.path.dirname(os.path.dirname(__file__))  #获取当前文件夹的父目录绝对路径

self.file_path = os.path.join(self.BASE_DIR,folder,file)  #获取config文件夹中的的path_file.conf文件————截图和日志配置文件路径

def getParam(self,path_Section,path_NO):

#创建读取配置文件的对象

cf1 = Config(self.file_path)

path = cf1.get_PATH(path_Section,path_NO)

path = self.BASE_DIR + path #将父目录和配置文件读取的相对路径拼接

return path

附上上面的Conifg模块写法:

import configparser

class Config:

def __init__(self,configPath):

self.configPath = configPath

def get_PATH(self,path_Section,path_NO):

cf = configparser.ConfigParser()

cf.read(self.configPath)

# path_section填写"PATH_YUNKU"

# 此处path_config = "path_001"以此类推

path = cf.get(path_Section,path_NO)

return path

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容