抛出问题:
当我们部署我们的代码的时候,会遇到一种情况,之前在配置文件中所有的文件路径都写成了绝对路径,基于你个人笔记本操作系统的用户路径,这样的话,当更换了其他电脑的时候,这个路径是无法复用的,所以产生了一个想法,利用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