Python 內置模塊之 ConfigParser - 解析 ini 文件

ini配置文件是被configParser直接解析然后再加載的,如果只是修改配置文件,并不會改變已經加載的配置

INI文件結構簡單描述

INI文件就是擴展名為“ini”的文件。在Windows系統中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。
該文件主要存放用戶所做的選擇以及系統的各種參數。用戶可以通過修改INI文件,來改變應用程序和系統的很多配置。但自從Windows 95的退出,在Windows系統中引入了注冊表的概念,INI文件在Windows系統的地位就開始不斷下滑,這是因為注冊表的獨特優點,使應用程序和系統都把許多參數和初始化信息放進了注冊表中。但在某些場合,INI文件還擁有其不可替代的地位。

INI文件結構

INI文件是一種按照特點方式排列的文本文件。每一個INI文件結構都非常類似,由若干段落(section)組成,在每個帶括號的標題下面,是若干個以單個單詞開頭的關鍵詞(keyword)和一個等號,等號右邊的就是關鍵字對應的值(value)。其一般形式如下:

[Section1]  
KeyWord1 = Valuel 
KeyWord2 = Value2 
……  
[Section2]  
KeyWord3 = Value3 
KeyWord4 = Value4  

其中:[Section1]用來表示一個段落。因為INI文件可能是項目中共用的,所以使用[Section]段名來區分不同用途的參數區。

例如:[Section1]表示傳感器靈敏度參數區;[Section2 ]表示測量通道參數區等等。KeyWord1=value1 用來表示一個參數名和值。

格式

INI文件由節、鍵、值組成。

[section]

參數(鍵=值)

name=value

注解

注解使用分號表示(;)。在分號后面的文字,直到該行結尾都全部為注解。

; comment text

linux 配置文件使用 # 注釋;

# comment text

Python ConfigParser

Python 標準庫的 ConfigParser 模塊提供了一套完整的 API 來讀取和操作配置文件。

在python 3 中ConfigParser模塊名已更名為configparser。
configparser模塊支持讀取.conf和.ini等類型的文件。
但是存在一些缺陷,無法識別section的大小寫,無法讀取文件注釋,這樣修帶有注釋的配置文件時就會存在問題。

操作配置文件

配置文件實例化

# 實例化 CoinfigParser 并加載配置文件
config = ConfigParser.SafeConfigParser()
config.read('config.ini')# 讀取配置文件內容,f必須是unicode
config.read_file(f, source=None)
# 從字符串解析配置數據
config.read_string(string, source=’’)
# 從詞典解析配置數據
config.read_dict(dictionary, source=’’)

配置文件的讀取和修改

# sections(): 得到所有的section,并以列表的形式返回
config.sections()# defaults():返回一個包含實例范圍默認值的詞典
config.defaults()# 添加一個新的section
config.add_section(section)# 判斷是否有section
config.has_section(section)# 得到該section的所有option
config.options(section)# items 得到section的所有鍵值對
config.items(option)# 判斷如果section和option都存在則返回True否則False
config.has_option(section, option)# 得到section中option的值,返回為string類型
config.get(section, option, *, raw=False, vars=None[, fallback])# 得到section中option的值,返回為int類型
config.getint(section,option)# 得到section中option的值,返回為float類型
config.getfloat(section,option)# 得到section中option的值,返回為boolean類型
config.getboolean(section, option)# 對section中的option進行更新,如果沒有相應的option,會新增
config.set(section, option, value)# 從指定section移除option
config.remove_option(section, option)# 移除section
config.remove_section(section)

配置文件的寫入

with open("config.ini", "w+") as f:config.write(f)# 將配置信息輸出到標準輸出
config.write(sys.stdout)# 將配置文件輸出到文件
config.write(open('new_book.info','w'))

示例

import threading
import configparser
class Config(object):_instance_lock = threading.Lock()def __init__(self):self.config = configparser.ConfigParser()self.config.read("config.ini")# single mode,the config file must be control by the only onedef __new__(cls, *arg, **kwargs):if not hasattr(Config, "_instance"):with Config._instance_lock:if not hasattr(Config, "_instance"):Config._instance = object.__new__(cls)return Config._instancedef get_config(self, section, k):return self.config.get(section, k)def get_section(self):return self.config.sections()def get_section_all_key(self, section):return self.config.options(section)def add_section(self, section):self.config.add_section(section)def update_k(self, section, k, v):# 更新相應的k,如果沒有對應的k,會自動創建 k,判斷k時不區分大小寫。self.config.set(section, k, v)def remove_section(self, section):self.config.remove_section(section)def remove_k(self, section, k):self.config.remove_option(section, k)def save_config(self):with open("config.ini", "w+") as f:self.config.write(f)

操作字典的方式操作文件

"""生成configparser配置文件 ,字典的形式"""
import configparser 
config = configparser.ConfigParser()# 第一種寫法
config["DEFAULT"] = {'ServerAliveInterval': '45','Compression': 'yes','CompressionLevel': '9'}# 第二種寫法
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'# 第三種寫法
config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = '50022'  # mutates the parser
topsecret['ForwardX11'] = 'no'  # same hereconfig['DEFAULT']['ForwardX11'] = 'yes'# 寫入后綴為.ini的文件
with open('example.ini', 'w') as configfile:config.write(configfile)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453822.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453822.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453822.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電腦老是彈出vrvedp_m_出現三個可疑進程vrvedp_m.exe?vrvrf_c.exe?vrvsafec.exe

滿意答案 你機器里裝了北信源的DeviceRegist軟件,這個軟件不是殺毒軟件或者防毒軟件,而是一個遠程桌面管理軟件。這類軟件其實和木馬程序原理上一樣,只不過是正規軟件公司開發的,但是流氓程度不容小覷,即使在安全模式下也會加載vrvrf_c.exe,vrvedp_m.exe,vrvsafec.exe,wat…

音視頻編解碼 文件格式 協議內容詳解

編解碼學習筆記(一):基本概念 媒體業務是網絡的主要業務之間。尤其移動互聯網業務的興起,在運營商和應用開發商中,媒體業務份量極重,其中媒體的編解碼服務涉及需求分析、應用開發、釋放license收費等等。最…

git 拉取遠程其他分支代碼_【記錄】git 拉取遠程分支代碼,同步到另一個git上...

最近有需求從某git 上拉取所有分支代碼同步到另一git上,現記錄操作步驟,以便日后使用:1:先克隆其中一個分支代碼到本地環境git clone -b test http://賬號:密碼XXX.git2:查看本地分支git brach3:查看遠程分…

WIN下的CMD下載命令

certutil -urlcache -split -f 遠程地址 本地保存的文件跑徑與文 件名 # 如里不寫本地文 件名與路徑名, 會自動跟遠程文 件名相同, 并保存到當前目 錄下另一個是: bitsadmin /rawreturn /transfer getfile http://download.sysinternals.com…

python 第三方模塊之 APScheduler - 定時任務

介紹 APScheduler的全稱是Advanced Python Scheduler。它是一個輕量級的 Python 定時任務調度框架。APScheduler 支持三種調度任務:固定時間間隔,固定時間點(日期),Linux 下的 Crontab 命令。同時,它還支持…

hadoop分布式搭建

一,前提:下載好虛擬機和安裝完畢Ubuntu系統。因為我們配置的是hadoop分布式,所以需要兩臺虛擬機,一臺主機(master),一臺從機(slave) 選定一臺機器作為 Master 在 Master …

Python 第三方模塊之 imgaug (圖像增強)

imgaug是一個封裝好的用來進行圖像augmentation的python庫,支持關鍵點(keypoint)和bounding box一起變換。 項目主頁: imgaug doc 1. 安裝和卸載 # 通過github安裝 sudo pip install githttps://github.com/aleju/imgaug# 通過pypi安裝 sudo pip install imgaug# 本地安裝, …

MPEG(mpeg1,mpeg2,mpeg4) 與H264 QP值間 關系

H264 Quant與MPEG Quant數值參對表 x264vfw 的1pass 是按照I q:21P q:24B q:26的量化算的,而且在vfw里面不能改變這些參數.但在mencoder里則可以定義1pass的 qp_constant<1?51>這個和xvid不同的,xvid一般是用q2跑1pass的,當然你也可以在x264設置一下,但是要清楚的是 H.2…

maya腳本用python還是mel_替換/替換材質的Maya Python/MEL腳本

在CreativeCrash上有一個舊線程處理此問題。我在那里展示的腳本如下(請參閱原始線程了解更多信息)&#xff1a;proc connectAndSet(string $original, string $target){$conn connectionInfo -sfd $original;if ($conn ! ""){connectAttr -force $conn $target;} el…

FreeBSD長模式不兼容

二進制轉換與此平臺上的長模式不兼容。此虛擬環境中的長模式將被禁用。因此需要使用長模式的應用程序將無法正常運行。請參見 http://vmware.com/info?id152 了解更多詳細信息。 mark轉載于:https://www.cnblogs.com/tuhooo/p/8116442.html

Python 第三方模塊之 numpy.random

本文概述 隨機數是NumPy庫中存在的模塊。該模塊包含用于生成隨機數的功能。該模塊包含一些簡單的隨機數據生成方法, 一些排列和分布函數以及隨機生成器函數。 簡單隨機數據 簡單隨機數據具有以下功能&#xff1a; 1)p.random.rand(d0, d1, …, dn) 隨機模塊的此功能用于生…

xvid 詳解 代碼分析 編譯等

1. Xvid參數詳解 眾所周知&#xff0c;Mencoder以其極高的壓縮速率和不錯的畫質贏得了很多朋友的認同&#xff01; 原來用Mencoder壓縮Xvid的AVI都是使用Xvid編碼器的默認設置&#xff0c;現在我來給大家沖沖電&#xff0c;講解一下怎樣使用Mencoder命令行高級參數制作Xvid編…

s4800掃描電鏡的CSS3_Hitachi S-4800型場發射掃描電子顯微鏡+能譜

一、主要部件&#xff1a;S-4800主機(包括真空系統、電子光學系統、檢測器)、X射線能譜儀&#xff0c;E-1030噴金噴碳裝置等。二、主要性能指標&#xff1a;二次電子分辨率&#xff1a;1.0 nm(15 kV)&#xff1b;2.0 nm(1 kV)&#xff1b;背散射電子分辨率&#xff1a;3.0 nm (…

很多人喜歡露腳踝你覺得時尚嗎?

當然是 時尚時尚最時尚的 露&#xff01;****腳&#xff01;脖&#xff01;子&#xff01;image.png人生就是這么奇怪 美容整形可以讓你擁有想要的五官 做個手術健個身能讓你擁有夢寐的線條 唯獨身高這事很難改變&#xff08;說多了都是淚&#xff09; 氮素呢 再難也難不倒眾位…

深度學習之生成式對抗網絡 GAN(Generative Adversarial Networks)

一、GAN介紹 生成式對抗網絡GAN&#xff08;Generative Adversarial Networks&#xff09;是一種深度學習模型&#xff0c;是近年來復雜分布上無監督學習最具前景的方法之一。它源于2014年發表的論文&#xff1a;《Generative Adversarial Nets》&#xff0c;論文地址&#xf…

android object數組賦值_Java對象數組定義與用法詳解

本文實例講述了Java對象數組定義與用法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;所謂的對象數組&#xff0c;就是指包含了一組相關的對象&#xff0c;但是在對象數組的使用中一定要清楚一點&#xff1a;數組一定要先開辟空間&#xff0c;但是因為其是引用數據類…

Fiddler抓取https證書問題

正常的使用方法 Fiddler 抓包工具總結 大部分問題的解決方案 fiddler4在win7抓取https的配置整理 像我臉一樣黑的解決方案 Fiddler https 證書問題 可能的解釋&#xff1a; Fiddler自帶兩個cert engine&#xff0c;一個是makecert&#xff0c;一個是CertEnroll&#xff0c;可…

深度學習之目標檢測:R-CNN、Fast R-CNN、Faster R-CNN

object detection 就是在給定的圖片中精確找到物體所在位置&#xff0c;并標注出物體的類別。object detection 要解決的問題就是物體在哪里&#xff0c;是什么這整個流程的問題。然而&#xff0c;這個問題不是容易解決的&#xff0c;物體的尺寸變化范圍很大&#xff0c;擺放物…

九江機器人餐廳_機器人精通200道佳肴 九江學院來了多位機器廚神

九江學院來了多位“機器廚神”●炒菜機一次能炒近10公斤菜&#xff0c;三四分鐘就能出鍋&#xff0c;味道也不錯●煮飯機從淘米到煮熟全部自動機械化操作&#xff0c;效率提高了不少電腦開啟&#xff0c;設定好程序&#xff0c;機器就可以自動運轉&#xff0c;快速炒出美味可口…

深度學習之邊框回歸(Bounding Box Regression)

從rcnn&#xff0c; fast rcnn, faster rcnn, yolo, r-fcn, ssd&#xff0c;到cvpr的yolo9000。這些paper中損失函數都包含了邊框回歸&#xff0c;除了rcnn詳細介紹了&#xff0c;其他的paper都是一筆帶過&#xff0c;或者直接引用rcnn就把損失函數寫出來了。前三條網上解釋比較…