日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 读取配置文件,报错configparser.NoSectionError: No section 解决方案

發布時間:2023/12/20 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 读取配置文件,报错configparser.NoSectionError: No section 解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

configparser簡要介紹

python的配置文件,將代碼中的配置項抽取到配置文件中,修改配置時不需要涉及到代碼修改,方便以后修改參數,極大的方便后期軟件的維護。一般配置文件為config.ini
ini文件的寫法一般是:

[section] hostname = 127.0.0.1 name = admin password = admin

讀取參數也十分簡單

cfg = configparser.ConfigParser()cfg.read('config.ini'))name= cfg.get('section','name') password = cfg.get('section','password ')

原因

首先在讀取配置文件時,我們在當前目錄下能夠正常運行,python main.py但是當我們切換到其他目錄下,比如上級目錄python ./test/main.py,運行的時候可能會報錯,configparser.NoSectionError: No section xx .產生此問題的原因是cofig.ini文件路徑不對,沒有正確讀取。
舉一反三,在其他需要用到路徑的地方,我們都需要注意,在此目錄下能后正確運行,換成其他目錄可能會產生錯誤,因此在使用os.getcwd()時需要注意。一般來說,可以采用下面方法解決。

解決方法

首先我們不能使用相關路徑或者絕對路徑的方式,這種方式只對特定的路徑有效,也就是你程序寫死了。
有效的解決思路是找到你文件的絕對路徑,在代碼中用全局變量記錄下來,其他部分在此基礎上進行本機或者上下級目錄等操作。具體實現是:

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
注:
__file__是當前執行的文件
os.path.dirname() 是 獲取路徑中的目錄名

這樣可以使用 BASE_DIR 進行相關操作,而不用擔心路徑問題。
所以本次問題,有效的解決代碼是:

BASE_DIR = os.path.dirname(os.path.abspath(__file__))# 讀取配置文件 cfg = configparser.ConfigParser()cfg.read(os.path.join(BASE_DIR ,'config.ini'))

注意使用os.path.join 以適應linux和windows不同目錄分隔符的寫法。
如果是多層級的話,可以使用os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

以上為二賽君整理發布,轉載請注明出處。若有效解決了你的問題,歡迎點贊~

總結

以上是生活随笔為你收集整理的python 读取配置文件,报错configparser.NoSectionError: No section 解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。