python筆記15-ini設定檔(configparser)

來源:互聯網
上載者:User

標籤:let   enc   write   png   receive   __file__   port   smt   odi   

前言

使用設定檔來靈活的配置一些參數是一件很常見的事情,設定檔的解析並不複雜,在python裡更是如此,在官方發布的庫中就包含有做這件事情的庫,那就是configParser

configParser解析的設定檔的格式比較象ini的設定檔格式,就是檔案中由多個section構成,每個section下又有多個配置項

ini

1.ini設定檔格式如下:

;這裡是注釋[section0]key0 = value0key1 = value1[section1]key2 = value2key3 = value3

2.section不能重複,裡面資料通過section去尋找,每個seletion下可以有多個key和vlaue的索引值對,注釋用英文分號(;)

configparser

1.python3裡面內建configparser模組來讀取ini檔案

# python3import configParser

注意:python2的版本是Configparser

# python2import ConfigParser

2.在pycharm裡面,建立一個ini檔案:右鍵New->File, 輸入框直接寫一個.ini尾碼檔案就行了,然後寫資料

3.注釋裡面有中文的話,這裡代碼跟python2是有點區別的,python2裡面直接conf.read(cfgpath)就可以了,python3需要加個參數:encoding="utf-8"

注意:如果ini檔案裡面寫的是數字,讀出來預設是字串

# coding:utf-8# 上海-悠悠# QQ群:588402570import configparserimport oscurpath = os.path.dirname(os.path.realpath(__file__))cfgpath = os.path.join(curpath, "cfg.ini")print(cfgpath)  # cfg.ini的路徑# 建立管理對象conf = configparser.ConfigParser()# 讀ini檔案conf.read(cfgpath, encoding="utf-8")  # python3# conf.read(cfgpath)  # python2# 擷取所有的sectionsections = conf.sections()print(sections)  # 返回listitems = conf.items('email_163')print(items)  # list裡面對象是元祖

運行結果:

D:\debug_p3\cfg\cfg.ini['email_qq', 'email_163'][('sender', '[email protected]'), ('psw', '123456'),('port', '465'), ('smtp_server', 'smtp.163.com'), ('receiver', '[email protected]')]
remove

1.如果想刪除section中的一項,比如我想刪除[email_163]下的port 這一行

# 刪除一個 section中的一個 item(以索引值KEY為標識)conf.remove_option('email_163', "port")

2.刪除整個section這一項

conf.remove_section('email_163')

3.參考代碼:

# coding:utf-8import configparserimport os# 上海-悠悠# QQ群:588402570curpath = os.path.dirname(os.path.realpath(__file__))cfgpath = os.path.join(curpath, "cfg.ini")print(cfgpath)  # cfg.ini的路徑# 建立管理對象conf = configparser.ConfigParser()# 刪除一個 section中的一個 item(以索引值KEY為標識)conf.remove_option('email_163', "port")items = conf.items('email_163')print(items)  # list裡面對象是元祖# 刪除一個 sectionconf.remove_section('email_163')sects = conf.sections()print(sects)  # list裡面對象是元祖

運行結果:

D:\debug_p3\cfg\cfg.ini[('sender', '[email protected]'), ('psw', '123456'), ('smtp_serve r', 'smtp.163.com'), ('receiver', '[email protected]')]['email_qq']
add

1.新增一個section

# 添加一個selectconf.add_section("emali_tel")print(conf.sections())

2.section裡面新增key和value

# 往select添加key和valueconf.set("emali_tel", "sender", "[email protected]")conf.set("emali_tel", "port", "265")
write寫入

1.write寫入有兩種方式,一種是刪除原檔案內容,重新寫入:w

conf.write(open(cfgpath, "w")) # 刪除原檔案重新寫入

另外一種是在原檔案基礎上繼續寫入內容,追加模式寫入:a

conf.write(open(cfgpath, "a")) # 追加模式寫入

2.前面講的remove和set方法並沒有真正的修改ini檔案內容,只有當執行conf.write()方法的時候,才會修改ini檔案內容,舉個例子:在ini檔案上追加寫入一項section內容

# coding:utf-8import configparserimport oscurpath = os.path.dirname(os.path.realpath(__file__))cfgpath = os.path.join(curpath, "cfg.ini")print(cfgpath)  # cfg.ini的路徑# 建立管理對象conf = configparser.ConfigParser()# 添加一個selectconf.add_section("emali_tel")print(conf.sections())# 往select添加key和valueconf.set("emali_tel", "sender", "[email protected]")conf.set("emali_tel", "port", "265")items = conf.items('emali_tel')print(items)  # list裡面對象是元祖conf.write(open(cfgpath, "a"))  # 追加模式寫入

運行後會發現ini檔案最後新增了寫入的內容了

set修改ini檔案

1.比如我想把前面ini檔案裡面的[email_163]下的port改成"中文"
注意:這裡寫入中文的話,需要加上寫入的編碼格式:encoding="utf-8"

# coding:utf-8import configparserimport os# 上海-悠悠# QQ群:588402570curpath = os.path.dirname(os.path.realpath(__file__))cfgpath = os.path.join(curpath, "cfg.ini")# 建立管理對象conf = configparser.ConfigParser()# 先讀出來conf.read(cfgpath, encoding="utf-8")# 修改section裡面的值conf.set("email_163", "port", "中文")  # 寫入中文conf.write(open(cfgpath, "r+", encoding="utf-8"))  # r+模式

python筆記15-ini設定檔(configparser)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.