2 回答

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
問題是您正在檢查配置文件是否存在,然后讀取它。
如果沒有,您的函數(shù)將返回None. 這在很多方面都是錯(cuò)誤的,因?yàn)閛s.path.realpath(sys.argv[0])可能返回不正確的值,例如,如果命令僅使用基本名稱運(yùn)行,通過系統(tǒng)路徑找到($0在 bash 中返回完整路徑,但不在 python 或 C 中)。
這不是您獲取當(dāng)前命令目錄的方式。
(加上之后你要做的with open('dwconfig.json') as json_data_file:就是現(xiàn)在的文件名,沒有完整路徑,又錯(cuò)了)
我會(huì)跳過這個(gè)測(cè)試,但正確計(jì)算配置文件路徑。如果它不存在,就讓程序崩潰,而不是返回None稍后會(huì)崩潰的程序。
def load_json_file(self):
with open(os.path.join(os.path.dirname(__file__),'dwconfig.json')) as json_data_file:
cfg_data = json.load(json_data_file)
return cfg_data

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
所以... cfg_dsn = con['config']['dsn']
里面的東西被設(shè)置為無
你可以安全地把它寫成這樣
(con or {}).get('config',{}).get('dsn')
或使您的數(shù)據(jù)正確。
添加回答
舉報(bào)