精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用Python內置模塊處理ini配置文件

開發 后端
本文不僅學習了如何使用初始化文件結構訪問文件中的值,還學習了如何操作和擴展它們。此外,您還了解了configparser的插值功能以及如何根據需要使用它們。

 ?[[353166]]??

簡介

開發人員每天都在處理一些大型而復雜的項目, 而配置文件會幫到我們并節省不少時間。在處理配置文件過程中,無需更改源代碼本身,只需要調整配置文件即可訪問不同的API接口、更新基礎URL信息或其它事情。

盡管可以通過多種方式來支持軟件中的配置文件,包括JSON,YAML和純文本文件,但本文旨在向您介紹 Python 標準庫中的configparser模塊。

注意:本文基于Python 3.9.0(CPython)??梢栽贕itHub上找到源代碼。(??https://github.com/DahlitzFlorian/how-to-work-with-config-files-in-python-article-snippets??)

文件結構

在編寫代碼之前,讓我們看一下實際配置文件的結構。 

[DEFAULT] admin_page = no landing_page = yes moderator_page = no  # looks good here  [moderator] moderator_page = yes  [admin] admin_page = yes moderator_page = yes 

在當前的示例中,我們有一個名為config.ini的配置文件。它由三個部分組成,每個部分都由一個標題和一個鍵-值對列表組成,該標題封裝在方括號內。

moderator和admin模塊只是鍵值對的集合,但DEFAULT模塊(第一個模塊)有些特殊。如果其他模塊之一未提供某個鍵的值,則它就會包含默認值。因此,如果您想嘗試訪問其他模塊中的值,但該鍵不存在,則解析器將從默認部分(如果存在)中返回該值,而不是引發KeyError。

在本例中,我們通過此配置文件管理用戶的頁面訪問。因此,默認部分代表普通用戶的權限,而moderator和admin模塊分別包含協管員和管理員的權限。

訪問文件的內容

ConfigParser對象是主要的配置解析器和configparser模塊的主要對象。您可以使用映射協議實現自己的配置解析器,讓我們繼續看看本文中的ConfigParser。

盡管ConfigParser接受很多參數,但我們將使用本文的默認值。讓我們在工作目錄中創建一個名為parser_playground.py的新文件。首先,我們從configparser模塊導入ConfigParser類,并創建該類的實例。 

# parser_playground.py from configparser import ConfigParser  config = ConfigParser() 

我們的配置對象不包含任何信息, 要更改此設置,我們需要先讀取config.ini文件。這可以通過調用ConfigParser實例(此處為config)的read()方法來完成。 

# previous code in parser_playground.py config.read("config.ini") 

讀取配置文件后,我們可以開始探索如何訪問其中存儲的信息。首先,我們要列出所有可用的部分。這可以通過使用ConfigParser的sections()方法來實現: 

# previous code in parser_playground.py print(f"Sections: {config.sections()}")  # Sections: ['moderator', 'admin'] 

此外,我們可以使用解析器的has_section()方法檢查某個模塊是否存在: 

# previous code in parser_playground.py print(f'Does a section called "admin" exist: {config.has_section("admin")}')  # True print(f'Does a section called "user" exist: {config.has_section("user")}')  # False print(f'Does a section called "DEFAULT" exist: {config.has_section("DEFAULT")}')  # False 

注意:調用sections()方法時,既未列出默認模塊·,也沒有被has_section()方法確認。

接下來,我們要訪問各個值。但是在使用其標識符訪問特定值之前,我們可以使用options()方法列出一個模塊的所有可用選項,并提供模塊名作為參數: 

# Previous code in parser_playground.py print(f'Options: {config.options("admin")}')  # Options: ['admin_page', 'moderator_page', 'landing_page'] 

此外,我們可以利用has_option()方法來檢查給定部分是否包含某個選項: 

# Previous code in parser_playground.py print(f'"admin_page" in "admin" section: {config.has_option("admin", "admin_page")}') 

要訪問模塊的值,可以使用解析器的get()方法并提供區域名稱和選項名稱。這些值將始終為字符串(如果存在)。如果需要其他格式的文件,請考慮使用相應的getboolean(),getint()和getfloat()方法。他們將嘗試將字符串解析為所需的數據類型。

總結本節內容時有個概念需要提到,它就是映射協議訪問。這個通用名稱意味著可以像處理字典一樣訪問值。也就是說,我們可以使用config [“ section”] [“ option”]類似的方法來訪問某個值,甚至檢查某個模塊中是否存在某個選項: 

# Previous code in parser_playground.py print("admin_page" in config["admin"])  # True print(config["admin"]["admin_page"])  # yes 

如何修改信息

接下來,讓我們看一下如何添加或更改信息并將其寫回到配置文件中。同樣,我們從模塊開始。要添加一個模塊,我們可以使用ConfigParser的add_section()方法。它接受模塊名稱作為字符串,并將相應模塊添加到解析器。提供不同的數據類型會導致TypeError。如果該模塊已經存在,則會引發DuplicateSectionError。嘗試將該模塊命名為默認值會導致ValueError。 

# Previous code in parser_playground.py config.add_section("unknown") print(f'Sections: {config.sections()}')  # Sections: ['moderator', 'admin', 'unknown'] 

要刪除一個模塊,只需使用remove_section()方法。 

# Previous code in parser_playground.py config.remove_section("unknown") print(f'Sections: {config.sections()}')  # Sections: ['moderator', 'admin'] 

Python的ConfigParser對象提供了類似的操作選項的方法。例如,調用set()方法,不僅可以向模塊添加新選項,還可以更新現有選項。同樣,如果您想完全刪除某個選項,請使用解析器的remove_option()方法。 

# Previous code in parser_playground.py config.set("admin", "admin_page", "false") config.remove_option("admin", "moderator_page") print(f'Options in "admin" section: {config.items("admin")}') 

處理完配置后,我們可以將其寫回到相同或不同的文件,如下所示: 

# Previous code in parser_playground.py with open("config1.ini", "w") as f:     config.write(f) 

插值

最后但也很重要的一點,讓我們看一下使ConfigParser優于Python的json模塊的東西:插值。插值意味著可以在調用某些get()方法返回值之前對其進行預處理。configparser模塊提供兩個插值類:BasicInterpolation和ExtendedInterpolation。第一個只允許重用配置文件中同一模塊中的選項,并且其語句不如后一個類的語句漂亮。這就是為什么我們只用ExtendedInterpolation類。

以下代碼段顯示了使用Extended Interpolation語句的配置文件。 

# interpolation_config.ini [paths] root_dir = /home/florian downloads_dir = ${root_dir}/Downloads  [destinations] app_dir = ${paths:downloads_dir}/application/python 

本質上,第一個模塊定義了根目錄的路徑。該路徑用作第二個選項的前綴,即下載目錄的路徑。在第二個模塊中,我們有一個選項app_dir,它重用了pahts模塊中對downloads目錄的定義。

為了掌握這一點,我們在實例化解析器時讓ConfigParser使用ExtendedInterpolation作為插值類型: 

# interpolation.py from configparser import ConfigParser from configparser import ExtendedInterpolation  config = ConfigParser(interpolation=ExtendedInterpolation()) config.read("interpolation_config.ini") 

如果現在打印destinations模塊的app_dir選項的值,則會得到一個插值字符串。 

# Previous code in interpolation.py print(config.get("destinations", "app_dir")) 


$ python interpolation.py /home/florian/Downloads/application/python 

概要 

本文不僅學習了如何使用初始化文件結構訪問文件中的值,還學習了如何操作和擴展它們。此外,您還了解了configparser的插值功能以及如何根據需要使用它們。

責任編輯:龐桂玉 來源: Python中文社區
相關推薦

2010-02-03 09:19:31

Python模塊

2021-07-13 05:47:40

GroovyJSON軟件開發

2024-03-19 08:05:00

C# WinForm文件開發

2021-07-05 12:09:58

Python編程語言

2021-12-02 18:15:39

網絡庫Ratel設計

2024-04-26 08:11:29

.NETJSONXML

2011-01-19 14:00:21

2011-01-13 16:27:26

Linux配置文件

2022-07-25 11:33:48

Python大文件

2010-12-28 16:35:32

Outlook 配置文

2010-12-27 14:59:31

Outlook 配置文

2010-03-18 18:17:01

Python 配置文件

2011-03-28 15:52:16

Nagios配置文件

2011-03-03 09:14:38

PureFTPd

2011-04-01 16:30:49

Nagios

2009-07-09 15:55:18

WebWork配置文件

2011-03-28 09:07:26

Nagios配置文件

2011-03-25 17:13:37

Nagios配置文件

2011-01-21 15:08:45

Sendmail

2009-06-17 14:10:30

Spring配置文件
點贊
收藏

51CTO技術棧公眾號

北条麻妃国产九九九精品小说| av女名字大全列表| 99久久亚洲精品蜜臀| 3d动漫精品啪啪| 男人添女荫道口喷水视频| 国产91免费在线观看| 久久亚洲不卡| 久久综合伊人77777尤物| 理论片大全免费理伦片| 韩国三级一区| 伊人夜夜躁av伊人久久| 久久综合中文色婷婷| 亚洲一二区视频| 亚洲一本视频| 日韩视频第一页| 三级电影在线看| 成人豆花视频| 色八戒一区二区三区| 乱熟女高潮一区二区在线| 精品av中文字幕在线毛片| 久久er精品视频| 欧美亚洲另类在线| 欧美成人国产精品高潮| 欧美日韩伦理| 日韩成人av在线播放| 国产精品嫩草影视| 视频在线日韩| 欧美日韩国产精品一区| 麻豆视频传媒入口| 91大神xh98hx在线播放| www.欧美亚洲| 99视频在线免费观看| 中文字幕av在线免费观看| 一本不卡影院| 久久久久五月天| www.av成人| 久久亚洲国产| 国产亚洲欧洲在线| 国产美女喷水视频| 免费看黄色的视频| 日本激情在线观看| 久久久久久亚洲综合| 国产成人精品日本亚洲11| 国产一区二区麻豆| 免费在线观看视频一区| 国产91在线高潮白浆在线观看| 国产精品9191| 亚洲香蕉网站| 欧美国产亚洲精品久久久8v| 国产一区二区播放| 亚洲国产精品成人| 久久精品视频一| 欧日韩不卡视频| 成人影院在线| 一区二区三区四区在线观看视频| 97人妻天天摸天天爽天天| 99国产精品免费网站| 欧美va亚洲va| 久久久久国产免费| 97久久综合区小说区图片区| 欧美一区二区精美| 国产探花在线观看视频| 精品精品视频| 日韩一区二区在线观看视频播放| 中文字幕乱码在线人视频| 欧美视频二区欧美影视| 日韩欧美国产综合| 国产吃瓜黑料一区二区| 国产成人精品亚洲线观看| 亚洲精品国产拍免费91在线| 色天使在线视频| 综合亚洲自拍| 中文字幕不卡在线视频极品| 亚洲视频重口味| 欧美在线播放| 欧美国产日韩一区二区| 国产一级二级三级| 国产一区导航| 国产精品直播网红| 国产免费av电影| 国产69精品久久久久777| 国产在线精品一区二区三区| 香港三日本三级少妇66| 久久免费美女视频| 一区二区在线不卡| 久久精品成人av| 熟妇人妻中文av无码| 91视频免费播放| 少妇免费毛片久久久久久久久| 最新97超碰在线| 国产精品福利一区二区| 99久久免费观看| 中文字幕在线看片| 欧美久久一二三四区| 最新日本中文字幕| 深爱激情综合| 超在线视频97| 亚洲精品午夜国产va久久成人| 午夜在线播放视频欧美| 国产一区二区香蕉| 人妻少妇精品无码专区| 亚洲国产岛国毛片在线| 日韩精品综合在线| 福利一区二区| 精品久久久久香蕉网| 天天躁日日躁aaaa视频| 欧美一区在线看| 国产成人在线精品| 亚洲国产日韩在线观看| 日本一二三四高清不卡| 国产一二三区在线播放| 88xx成人网| 亚洲国产成人久久综合| www.xx日本| 午夜一级久久| 99国精产品一二二线| 番号集在线观看| 亚洲二区在线观看| 一女二男3p波多野结衣| 秋霞蜜臀av久久电影网免费| 久久天天躁狠狠躁夜夜爽蜜月| 国内自拍视频在线播放| 丰满放荡岳乱妇91ww| 亚洲欧美日韩精品在线| 忘忧草在线影院两性视频| 日韩欧美在线网站| 欧美成人久久久免费播放| 国产欧美一级| 99re视频在线| 成人日韩欧美| 欧美日韩国产高清一区| 国产肥白大熟妇bbbb视频| 亚洲区国产区| 国产精品.com| 韩国无码一区二区三区精品| av影视在线| 日韩小视频在线观看专区| 成人黄色免费网址| 亚洲一区二区三区高清不卡| 成人国产一区二区| 在线中文免费视频| 欧美日本国产视频| 我不卡一区二区| 欧美亚洲一区二区三区| 久久精品五月婷婷| 91资源在线观看| 欧美成人欧美edvon| 深夜福利影院在线观看| 狠狠色狠狠色综合日日91app| 五月天亚洲综合情| 日韩欧美精品一区二区综合视频| 亚洲欧洲在线免费| 黄色av一级片| 国产欧美一区二区在线观看| 国产xxxxx视频| 精品视频免费| 国产精品视频网址| 91porn在线观看| 欧美日韩国产一区| 秋霞欧美一区二区三区视频免费| 久久国产三级精品| 国产a级片免费看| 久久久久毛片免费观看| 欧美成人免费全部| 亚洲精品一区二区三区四区| 亚洲成人在线网站| 风间由美一二三区av片| 三级欧美在线一区| 日韩一区二区电影在线观看| 九九热这里有精品| 久久精品国产一区| 亚洲成人av综合| 亚洲国产美国国产综合一区二区| 波多野结衣加勒比| 麻豆精品网站| 一道精品一区二区三区| 国产乱码精品一区二区三区亚洲人 | 成人av电影在线播放| 日韩欧美视频网站| 成人影院在线| ts人妖另类在线| 黄色成人免费网| 日韩在线www| 男人天堂网站在线| 少妇高潮一区二区三区69| 欧美日韩视频在线| 东方伊人免费在线观看| 国产麻豆精品视频| 欧美日韩精品在线一区二区 | 无遮挡亚洲一区| 久久精品免视看国产成人| 性欧美长视频免费观看不卡| h网站视频在线观看| 日韩亚洲电影在线| xxxx.国产| 亚洲视频一二三| 波多野结衣视频播放| 麻豆极品一区二区三区| 日本免费a视频| 欧美午夜精彩| 国产区一区二区三区| 香蕉成人影院| 欧美黑人性生活视频| 国产天堂在线| 精品国产一区二区亚洲人成毛片 | 精品无码一区二区三区蜜臀| av在线这里只有精品| 99热一区二区| 性高湖久久久久久久久| 精品一区二区三区毛片| 精品国产乱码久久久| 国产精品一区二区免费| 欧美暴力调教| 欧美一级视频免费在线观看| 超碰超碰在线| 国产亚洲精品一区二区| 黄色三级网站在线观看| 4438x成人网最大色成网站| 五月天激情四射| 亚洲成人精品一区| 国产精品白丝喷水在线观看| 欧美韩日一区二区三区四区| xxxxxx黄色| 国产精品18久久久久久久久| 少妇激情一区二区三区| 国产综合自拍| 国产又大又长又粗又黄| 日韩在线综合| 欧美一级片免费观看| 免费福利视频一区| 成人在线看片| av网站在线观看免费| 99xxxx成人网| 好色先生视频污| 日韩欧美视频在线播放| 日本精品一区二区三区视频| 美国一区二区| 国产精品播放| 99精品国产一区二区三区2021 | 一卡二卡在线观看| 91国偷自产一区二区三区成为亚洲经典 | 成 人 黄 色 小说网站 s色| 肉色丝袜一区二区| 国产男女激情视频| 亚洲综合国产激情另类一区| 久操网在线观看| 一区久久精品| 97视频久久久| 国产精品久久777777毛茸茸| 福利视频一区二区三区四区| 亚洲午夜精品久久久久久app| 欧美少妇在线观看| 欧美精品午夜| 国产成a人亚洲精v品在线观看| 狠狠干综合网| 午夜精品福利一区二区三区蜜桃| 18深夜在线观看免费视频| 国产一区日韩二区欧美三区| 一级网站在线观看| 国产综合久久久久久鬼色 | 亚洲精品日韩欧美| 日韩二区三区| 国产亚洲综合久久| 在线观看黄av| 久久久精品久久久久| 91蜜桃在线视频| 久久频这里精品99香蕉| 神马午夜在线视频| 国产精品99久久99久久久二8| 性欧美freehd18| 国产久一一精品| 国产精品一区二区精品| 99国产视频在线| 日韩av影院| 亚洲精蜜桃久在线| 亚洲二区三区不卡| 国产人妻777人伦精品hd| 裸体一区二区| 最新天堂在线视频| 国产成人在线网站| 影音先锋人妻啪啪av资源网站| 久久午夜色播影院免费高清 | 色777狠狠狠综合伊人| 在线观看18视频网站| 亚洲韩日在线| 中文字幕第80页| 国产一区二区不卡老阿姨| 午夜精品蜜臀一区二区三区免费| 蜜臀av中文字幕| 亚洲色图日韩av| 永久免费网站在线| 8050国产精品久久久久久| 成人av色网站| 成人情视频高清免费观看电影| 国产欧美日韩一区二区三区四区 | 电影在线一区| 免费成人高清视频| 欧美动物xxx| 91传媒在线免费观看| 日韩mv欧美mv国产网站| 亚洲视频在线二区| 影音先锋亚洲精品| 一路向西2在线观看| 成人激情视频网站| 999精品久久久| 欧美日韩国产一区二区| 伊人网免费视频| 亚洲激情在线观看| 免费高清在线观看| 日韩av123| 福利在线一区| 看一级黄色录像| 爽爽淫人综合网网站 | 久久久国产精品不卡| 欧美日韩在线国产| 欧美日韩中文字幕一区| 五月婷婷深深爱| 欧美国产日本在线| 久久国内精品| 热re99久久精品国99热蜜月| 极品中文字幕一区| 第四色婷婷基地| 久久久精品国产免大香伊| 玖玖爱免费视频| 69p69国产精品| chinese偷拍一区二区三区| 9.1国产丝袜在线观看| 亚洲精品18| 中文字幕一区二区中文字幕| 久久久久久黄| 日韩精品视频网址| 国产精品国产三级国产aⅴ中文| 中文字幕激情小说| 亚洲大胆美女视频| 欧美人与禽性xxxxx杂性| 成人综合网网址| 天天操综合网| 国产女同无遮挡互慰高潮91| 久久久国产综合精品女国产盗摄| 一级黄色免费网站| 国产视频精品免费播放| 国产99在线观看| 国产日韩精品久久| 亚洲激情一区| 800av在线播放| 欧美日韩美女在线| 亚洲 另类 春色 国产| 91精品成人久久| 亚州精品视频| 精品久久久久av| 国产视频一区在线播放| 国产情侣呻吟对白高潮| 在线观看欧美日韩国产| 国产a亚洲精品| 日韩精品一区二区三区在线播放| 成人午夜免费福利| 久久久久久久一区二区| 成人高潮a毛片免费观看网站| 免费观看国产视频在线| 国产成人在线视频网址| 国产黄色片视频| 日韩成人中文字幕在线观看| 亚洲天堂资源| 亚洲不卡中文字幕| 日韩精品免费视频人成| xxxxx99| 欧美精品第1页| 天堂8中文在线| 国产一区福利视频| 久久久精品午夜少妇| 国精产品视频一二二区| 欧美片网站yy| 国产丝袜视频在线播放| 久久精品国产精品青草色艺| 久久精品网址| sm捆绑调教视频| 精品日韩99亚洲| 亚洲涩涩在线| 亚洲免费视频一区| 国产麻豆精品视频| 中文字幕精品三级久久久| 一区二区欧美亚洲| 国产精品亚洲欧美一级在线| av无码久久久久久不卡网站| 91影院在线观看| 一级黄色片在线播放| 久久久噜噜噜久久| 成人aaaa| 国产69视频在线观看| 91高清视频免费看| 成人免费网站在线观看视频| 蜜桃传媒视频麻豆第一区免费观看| 免费成人av资源网| 国产极品在线播放| 伊人久久久久久久久久久久久| 一区二区三区视频播放| 人妻无码视频一区二区三区| 一区二区三区四区中文字幕| 黑人与亚洲人色ⅹvideos| 亚洲综合自拍一区|