欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python庫(kù)configparser教程

系統(tǒng) 2132 0

文章目錄

    • 前言
    • 初探configparser
      • 配置文件
      • 讀入配置:
      • 讀取數(shù)據(jù)
    • Section
      • Section增加
      • Section檢索
      • Section刪除
    • 高級(jí)操作
        • 單個(gè)option對(duì)應(yīng)多行值
        • 單個(gè)option無(wú)對(duì)應(yīng)值
        • Interpolation 插值
          • BasicInterpolation
          • ExtendedInterpolation
    • 總結(jié)

前言

configparser是Python中的一個(gè)配置文件解析庫(kù),可以讀取配置文件中的變量和值。配置文件有什么作用呢?作用就是當(dāng)你寫(xiě)程序的時(shí)候,有一些固定的值,但這些值雖然暫時(shí)不會(huì)更改,但是并不確定以后會(huì)不會(huì)改變。
例如:在你的程序中有一個(gè)變量 price = 100 為定值,但是可能一段時(shí)間后 price = 200 那么你將如何改變?也許你可以手動(dòng)一個(gè)個(gè)改,或者稍微效率高點(diǎn)的使用編輯器的替換功能(但是這樣難免保證不小心把其他變量也替換了)。這時(shí)候配置文件就有很大作用了,當(dāng)你需要改變這些變量時(shí),只需要更改配置文件,就可以輕松改變程序中所有值了。
下面,我們來(lái)開(kāi)始了解一下configparser模塊吧!


初探configparser

配置文件

首先我們需要新建一個(gè)配置文件,在Windows中一般取后綴名為 .ini ,當(dāng)然你也可以取其他的名字 .cfg .txt 都行。好了,我們就新建一個(gè) demo.ini 吧!現(xiàn)在我們朝它寫(xiě)入一些內(nèi)容:

            
              [DEFAULT]
User =Lee
Date=2019-05-16
WeekDay=4
IsWorkDay=True

            
          

這里我們定義了一個(gè) Section 名為 DEFAULT ,里面的字段分別為:

  • User
  • Date
  • WeekDay
  • IsWorkDay

讀入配置:

接下來(lái),我們先導(dǎo)入 configparser ,并定義一個(gè) ConfigParser 類(lèi)

            
              
                import
              
               configparser
parser 
              
                =
              
               configparser
              
                .
              
              ConfigParser
              
                (
              
              
                )
              
            
          

接下來(lái)讀入配置文件

            
              configPath 
              
                =
              
              
                './demo.ini'
              
              
parser
              
                .
              
              read
              
                (
              
              configPath
              
                )
              
            
          

這里是從配置文件中讀取,還有其他操作:

  • .read_dict(dictionary :從字典中讀取。
  • .read_string(string) :從字符串中讀取。
  • .read_file(f) :從文件指針中讀取。eg: parser.read_file(open('./demo.ini'))

讀取數(shù)據(jù)

讀取數(shù)據(jù)可以使用類(lèi)似字典 dict 的方法:

            
              
                >>
              
              
                >
              
              parser
              
                [
              
              
                'DEFAULT'
              
              
                ]
              
              
                [
              
              
                'User'
              
              
                ]
              
              
                'Lee'
              
              
                # 等價(jià)于
              
              
                >>
              
              
                >
              
              parser
              
                [
              
              
                'DEFAULT'
              
              
                ]
              
              
                [
              
              
                'user'
              
              
                ]
              
              
                'Lee'
              
            
          

這里我們可以發(fā)現(xiàn),文件存儲(chǔ)的形式相當(dāng)于一個(gè)字典,鍵名叫作 option ,并且 DEFAULT 段中的鍵名 User 不區(qū)分大小寫(xiě) ,但是段名 DEFAULT 還是 區(qū)分大小寫(xiě) 的。
這里我們要注意的是,文件中的所有變量都是默認(rèn)字符串形式,讀取出來(lái)的類(lèi)型都是字符串,對(duì)于其他類(lèi)型的變量,我們可以對(duì)其進(jìn)行轉(zhuǎn)換,或者使用內(nèi)置的方法,例如 WeekDay

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              getint
              
                (
              
              
                'DEFAULT'
              
              
                ,
              
              
                'WeekDay'
              
              
                )
              
              
                4
              
            
          

對(duì)于 boolean 型變量,可以i使用 getboolean 方法:

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              getboolean
              
                (
              
              
                "DEFAULT"
              
              
                ,
              
              
                "IsWorkDay"
              
              
                )
              
              
                True
              
            
          

類(lèi)似的還有 .getfloat(section, option) 返回float類(lèi)型

同樣也可以使用 get() 方法取字段中的 option

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              get
              
                (
              
              
                "DEFAULT"
              
              
                ,
              
              
                "IsWorkDay"
              
              
                )
              
              
                'True'
              
            
          

這里比較推薦使用 get() 方法,因?yàn)樽侄沃胁淮嬖谀硞€(gè) option 時(shí),使用類(lèi)似字典的方法會(huì)報(bào)錯(cuò),而使用 get() 方法就可以設(shè)置 fallback 值,表示當(dāng)不存在時(shí)返回的默認(rèn)值。

            
              
                >>
              
              
                >
              
              parser
              
                [
              
              
                'DEFAULT'
              
              
                ]
              
              
                [
              
              
                'does-not-exist'
              
              
                ]
              
              
Traceback 
              
                (
              
              most recent call last
              
                )
              
              
                :
              
              
                .
              
              
                .
              
              
                .
              
              
KeyError
              
                :
              
              
                'does-not-exist'
              
              
                >>
              
              
                >
              
              parser
              
                .
              
              get
              
                (
              
              
                "DEFAULT"
              
              
                ,
              
              
                "does-not-exist"
              
              
                ,
              
               fallback
              
                =
              
              
                ""
              
              
                )
              
              
                ''
              
            
          

這里我們?cè)O(shè)置了 fallback 為空,因此當(dāng) option 不存在時(shí),返回空串而不是報(bào)錯(cuò)。


Section

Section增加

接下來(lái)我們要新增一個(gè) Section 段,我們可以直接在配置文件中加入:

            
              
                [
              
              DEFAULT
              
                ]
              
              
User 
              
                =
              
              Lee
Date
              
                =
              
              
                2019
              
              
                -
              
              
                05
              
              
                -
              
              
                16
              
              
WeekDay
              
                =
              
              
                4
              
              
IsWorkDay
              
                =
              
              
                True
              
              
                # 新增Section1
              
              
                [
              
              Section1
              
                ]
              
              
Year
              
                =
              
              
                2019
              
              
Month
              
                =
              
              
                5
              
              
Day
              
                =
              
              
                16
              
              
Language
              
                =
              
              Pythoon
FilePath
              
                =
              
              
                .
              
              
                /
              
              demo
              
                .
              
              ini

            
          

也可以在代碼中寫(xiě)入:

            
              parser
              
                [
              
              
                'Section1'
              
              
                ]
              
              
                =
              
              
                {
              
              
                "Year"
              
              
                :
              
              
                2019
              
              
                ,
              
              
                "Month"
              
              
                :
              
              
                5
              
              
                ,
              
              
                "Day"
              
              
                :
              
              
                16
              
              
                ,
              
              
                "Language"
              
              
                :
              
              
                "Python"
              
              
                ,
              
              
                "FilePath"
              
              
                :
              
              
                "./demo.ini"
              
              
                }
              
            
          

這里雖然我們寫(xiě)入的時(shí)候 Year Month Day 都為數(shù)值類(lèi)型,但是默認(rèn)是字符串,因此當(dāng)你輸出的時(shí)候還是字符串:

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              get
              
                (
              
              
                'Section1'
              
              
                ,
              
              
                'Year'
              
              
                )
              
              
                '2019'
              
            
          

我們還可以這樣寫(xiě)入:

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              add_section
              
                (
              
              
                'Section1'
              
              
                )
              
              
                >>
              
              
                >
              
              parser
              
                .
              
              
                set
              
              
                (
              
              
                "Section1"
              
              
                ,
              
              
                "Year"
              
              
                ,
              
              
                "2019"
              
              
                )
              
              
                # 注意這里option的值必須為字符串類(lèi)型
              
            
          

Section檢索

我們可以查看是否存在 Section

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              has_section
              
                (
              
              
                'Section1'
              
              
                )
              
              
                True
              
            
          

同理也可以查看是否存在 option

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              has_option
              
                (
              
              
                'Section1'
              
              
                ,
              
              
                'Year'
              
              
                )
              
              
                True
              
            
          

我們可以查看目前有幾個(gè) Section

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              sections
              
                (
              
              
                )
              
              
                [
              
              
                'Section1'
              
              
                ]
              
            
          

怎么沒(méi)有 DEFAULT ?
因?yàn)? DEFAULT 是配置文件中的默認(rèn)字段,不屬于一個(gè) Section
查看 Section 中的 option

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              options
              
                (
              
              
                'Section1'
              
              
                )
              
              
                [
              
              
                'year'
              
              
                ,
              
              
                'month'
              
              
                ,
              
              
                'day'
              
              
                ,
              
              
                'language'
              
              
                ,
              
              
                'filepath'
              
              
                ,
              
              
                'user'
              
              
                ,
              
              
                'date'
              
              
                ,
              
              
                'weekday'
              
              
                ,
              
              
                'isworkday'
              
              
                ]
              
            
          

你會(huì)發(fā)現(xiàn),它不止返回了 Section 中的 option ,還返回了 DEFAULT 中的 option ,并且這個(gè) DEFAULT 你無(wú)法在代碼中刪除它。
我們?cè)谖募?nèi)容中將其改名為 Section0 :

            
              
                [
              
              Section0
              
                ]
              
              
User
              
                =
              
              Lee
Date
              
                =
              
              
                2019
              
              
                -
              
              
                05
              
              
                -
              
              
                16
              
              
WeekDay
              
                =
              
              
                4
              
              
IsWorkDay
              
                =
              
              
                True
              
              
                [
              
              Section1
              
                ]
              
              
Year
              
                =
              
              
                2019
              
              
Month
              
                =
              
              
                5
              
              
Day
              
                =
              
              
                16
              
              
Language
              
                =
              
              Pythoon
FilePath
              
                =
              
              
                .
              
              
                /
              
              demo
              
                .
              
              ini


            
          

然后

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              sections
              
                (
              
              
                )
              
              
                [
              
              
                'Section0'
              
              
                ,
              
              
                'Section1'
              
              
                ]
              
              
                >>
              
              
                >
              
              parser
              
                .
              
              options
              
                (
              
              
                'Section1'
              
              
                )
              
              
                [
              
              
                'year'
              
              
                ,
              
              
                'month'
              
              
                ,
              
              
                'day'
              
              
                ,
              
              
                'language'
              
              
                ,
              
              
                'filepath'
              
              
                ]
              
            
          

好了這樣舒服多了。
還可以查看某個(gè) Section 中的 option 對(duì):

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              items
              
                (
              
              
                "Section1"
              
              
                )
              
              
                [
              
              
                (
              
              
                'year'
              
              
                ,
              
              
                '2019'
              
              
                )
              
              
                ,
              
              
                (
              
              
                'month'
              
              
                ,
              
              
                '5'
              
              
                )
              
              
                ,
              
              
                (
              
              
                'day'
              
              
                ,
              
              
                '16'
              
              
                )
              
              
                ,
              
              
                (
              
              
                'language'
              
              
                ,
              
              
                'Pythoon'
              
              
                )
              
              
                ,
              
              
                (
              
              
                'filepath'
              
              
                ,
              
              
                './demo.ini'
              
              
                )
              
              
                ]
              
            
          

Section刪除

刪除一個(gè) Section 可以使用 .remove_section() 方法:

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              remove_section
              
                (
              
              
                "Section1"
              
              
                )
              
              
                True
              
            
          

還有其他類(lèi)似操作:

  • .popitem() ,刪除最上面的一個(gè) Section 并返回,如果空則報(bào)錯(cuò)(類(lèi)似棧的彈出)
  • .clear() ,刪除所有 Section
  • .remove_option(section, option) 刪除某個(gè) Section 中的 option

高級(jí)操作

單個(gè)option對(duì)應(yīng)多行值

更改下配置文件中 Section0 的內(nèi)容

            
              
                [
              
              Section0
              
                ]
              
              
User
              
                =
              
              Lee 
  James 
              
                # 注意前面必須縮進(jìn)!
              
              
  Michael
Date
              
                =
              
              
                2019
              
              
                -
              
              
                05
              
              
                -
              
              
                16
              
              
WeekDay
              
                =
              
              
                4
              
              
IsWorkDay
              
                =
              
              
                True
              
            
          

使得單個(gè) option 對(duì)應(yīng)多個(gè)值 Lee``James``Michael

            
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              parser
              
                [
              
              
                "Section0"
              
              
                ]
              
              
                [
              
              
                "user"
              
              
                ]
              
              
                )
              
              
Lee
James
Michael

            
          

單個(gè)option無(wú)對(duì)應(yīng)值

            
              
                [
              
              Section0
              
                ]
              
              
User
              
                =
              
              Lee 
  James # 注意前面必須縮進(jìn)!
  Michael
Date
              
                =
              
              
                2019
              
              
                -
              
              
                05
              
              
                -
              
              
                16
              
              
Tomorrow   # 無(wú)對(duì)應(yīng)值
WeekDay
              
                =
              
              
                4
              
              
Today     # 無(wú)對(duì)應(yīng)值
IsWorkDay
              
                =
              
              True

            
          

這里我們?cè)黾恿藘蓚€(gè)無(wú)對(duì)應(yīng)值的 option ,但是注意:
開(kāi)頭必須設(shè)置 allow_no_value=True

            
              parser 
              
                =
              
               configparser
              
                .
              
              ConfigParser
              
                (
              
              allow_no_value
              
                =
              
              
                True
              
              
                )
              
            
          

然后,讀取所有 option

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              options
              
                (
              
              
                "Section0"
              
              
                )
              
              
                [
              
              
                'user'
              
              
                ,
              
              
                'date'
              
              
                ,
              
              
                'tomorrow'
              
              
                ,
              
              
                'weekday'
              
              
                ,
              
              
                'today'
              
              
                ,
              
              
                'isworkday'
              
              
                ]
              
              
                >>
              
              
                >
              
              parser
              
                .
              
              get
              
                (
              
              
                "Section0"
              
              
                ,
              
              
                "Tomorrow"
              
              
                )
              
              
                # 輸出空
              
            
          

Interpolation 插值

BasicInterpolation

BasicInterpolation 是默認(rèn)的 Interpolation 類(lèi),我們可以定義類(lèi)似占位符一樣的形式來(lái)進(jìn)行插值操作,我們先修改 Section0 如下:

            
              
                [
              
              Section0
              
                ]
              
              
Year
              
                =
              
              
                2019
              
              
Month
              
                =
              
              
                5
              
              
Day
              
                =
              
              
                16
              
              
Date
              
                =
              
              
                %
              
              
                (
              
              Year
              
                )
              
              s
              
                -
              
              
                %
              
              
                (
              
              Month
              
                )
              
              s
              
                -
              
              
                %
              
              
                (
              
              Day
              
                )
              
              s

            
          
            
              
                >>
              
              
                >
              
              parser
              
                .
              
              get
              
                (
              
              
                "Section0"
              
              
                ,
              
              
                "Date"
              
              
                )
              
              
                '2019-5-16'
              
            
          

這里我們利用的是類(lèi)似C語(yǔ)言中的 %s ,形式為 %(option)s

            
              parser
              
                .
              
              get
              
                (
              
              
                "Section0"
              
              
                ,
              
              
                "Date"
              
              
                ,
              
               raw
              
                =
              
              
                True
              
              
                )
              
              
                # 許多方法都有這個(gè)raw參數(shù)來(lái)輸出raw字符串
              
            
          

或者在開(kāi)頭定義 parser 時(shí)設(shè)置:

            
              parser 
              
                =
              
               ConfigParser
              
                (
              
              interpolation 
              
                =
              
              
                None
              
              
                )
              
            
          

輸出則變成:

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              get
              
                (
              
              
                "Section0"
              
              
                ,
              
              
                "Date"
              
              
                )
              
              
                '%(Year)s-%(Month)s-%(Day)s'
              
            
          
ExtendedInterpolation

或者我們可以使用 ExtendedInterpolation() 類(lèi)
修改 Section0 如下:

            
              
                [
              
              Section0
              
                ]
              
              
Year
              
                =
              
              
                2019
              
              
Month
              
                =
              
              
                5
              
              
Day
              
                =
              
              
                16
              
              
Date
              
                =
              
              $
              
                {
              
              Year
              
                }
              
              
                -
              
              $
              
                {
              
              Month
              
                }
              
              
                -
              
              $
              
                {
              
              Day
              
                }
              
            
          

得到同樣的效果

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              get
              
                (
              
              
                "Section0"
              
              
                ,
              
              
                "Date"
              
              
                )
              
              
                '2019-5-16'
              
            
          

注意這時(shí)候格式是: ${section:option} ,也就是可以設(shè)置某個(gè) Section 中的某個(gè) option ,即可以使用別的段中的 option ,比如我們修改文件內(nèi)容如下:

            
              
                [
              
              Section0
              
                ]
              
              
Date
              
                =
              
              $
              
                {
              
              Section1
              
                :
              
              Year
              
                }
              
              
                -
              
              $
              
                {
              
              Section1
              
                :
              
              Month
              
                }
              
              
                -
              
              $
              
                {
              
              Section1
              
                :
              
              Day
              
                }
              
              
                [
              
              Section1
              
                ]
              
              
Year
              
                =
              
              
                2019
              
              
Month
              
                =
              
              
                5
              
              
Day
              
                =
              
              
                16
              
            
          

一樣的結(jié)果:

            
              
                >>
              
              
                >
              
              parser
              
                .
              
              get
              
                (
              
              
                "Section0"
              
              
                ,
              
              
                "Date"
              
              
                )
              
              
                '2019-5-16'
              
            
          

總結(jié)

.ini 文件中:

  • 文件中的任何變量形式都是字符串
  • option 對(duì)可以用 = : 來(lái)表示鍵值對(duì)應(yīng)
  • option 鍵名不區(qū)分大小寫(xiě), Section 名區(qū)分
  • 文件中多余的空白符會(huì)被默認(rèn)去掉
  • option 的值可以多行,也可為空
  • 注釋以 # 或者 ; 開(kāi)頭

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 99久久精品国产片久人 | 国产精品久久久爽爽爽麻豆色哟哟 | 国产目拍亚洲精品99久久精品 | 六月色播| 亚洲精品欧美综合四区 | 天天色天天 | 国产毛片精品 | 在线播放亚洲 | 日本大片久久久高清免费看 | 国产亚洲精品久久久久婷婷图片 | 国产精品一区久久 | 亚洲黄区 | 亚洲日本在线天堂无码 | 無码一区中文字幕少妇熟女H | 韩国精品在线 | 91av在线电影 | 成人黄色在线视频 | 咪咪色在线视频 | 亚洲毛片网站 | 这里精品 | 91亚瑟视频| 亚洲福利电影网 | 欧美午夜一区二区三区免费大片 | 天天操天天干天天操 | 亚洲99| 一级黄a| 午夜免费视频 | 伊人久久大杳蕉综合大象 | 精品无人区一区二区三 | 色综合久久88色综合天天 | 日韩精品真人荷官无码 | 成人在线一区二区三区 | 99久久久无码国产精品 | 国产精品国产午夜免费福利看 | 影音先锋亚洲资源 | 精品一区二区日本高清 | 亚洲不卡 | 久久久999精品视频 日本高清不卡在线 | 久久se精品一区精品二区 | 国产精品xxxav免费视频 | 亚洲婷婷综合中文字幕第一页 |