拋出問(wèn)題:
當(dāng)我們部署我們的代碼的時(shí)候,會(huì)遇到一種情況,之前在配置文件中所有的文件路徑都寫(xiě)成了絕對(duì)路徑,基于你個(gè)人筆記本操作系統(tǒng)的用戶路徑,這樣的話,當(dāng)更換了其他電腦的時(shí)候,這個(gè)路徑是無(wú)法復(fù)用的,所以產(chǎn)生了一個(gè)想法,利用os.path模塊獲取當(dāng)前文件所處的父目錄的絕對(duì)路徑(其實(shí)就是你項(xiàng)目根目錄的絕對(duì)路徑),然后在配置文件中只需要寫(xiě)每個(gè)需要用到的模塊的相對(duì)路徑即可,然后把父目錄的絕對(duì)路徑和各模塊的相對(duì)路徑做一次拼接,這樣就可以實(shí)現(xiàn)上述問(wèn)題的解決了~
config_file_path = os.path.split(os.path.realpath(__file__))[0] ? ?# 1:獲取當(dāng)前文件所處文件夾的絕對(duì)路徑
config_file_path = os.path.dirname(os.path.dirname(__file__)) ?#2:當(dāng)前文件父目錄的絕對(duì)路徑
config_file_path = os.path.dirname(os.path.realpath(__file__))? #3:當(dāng)前文件所處文件夾的絕對(duì)路徑,等同于第1種寫(xiě)法
例子1:
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) #獲取當(dāng)前文件夾的父目錄絕對(duì)路徑
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__))? #獲取當(dāng)前文件夾的父目錄絕對(duì)路徑
self.file_path = os.path.join(self.BASE_DIR,folder,file)? #獲取config文件夾中的的path_file.conf文件————截圖和日志配置文件路徑
def getParam(self,path_Section,path_NO):
#創(chuàng)建讀取配置文件的對(duì)象
cf1 = Config(self.file_path)
path = cf1.get_PATH(path_Section,path_NO)
path = self.BASE_DIR + path #將父目錄和配置文件讀取的相對(duì)路徑拼接
return path
附上上面的Conifg模塊寫(xiě)法:
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填寫(xiě)"PATH_YUNKU"
# 此處path_config = "path_001"以此類(lèi)推
path = cf.get(path_Section,path_NO)
return path