Python 常用函數 configparser模塊

使用ConfigParser模塊讀寫ini文件

ConfigParserPython的ConfigParser Module中定義了3個類對INI文件進行操作。分別是RawConfigParser、ConfigParser、SafeConfigParser。模塊所解析的ini配置文件是由多個section構成,每個section名用中括號‘[]’包含,每個section下可有多個配置項類似于key-value形式,

配置文件a.ini如下:

# 注釋1
; 注釋2
[section1]
k1 = v1
k2:v2
user=egon
age=18
is_admin=true
salary=31

[section2] k1 = v1

讀取

import configparser
config=configparser.ConfigParser()
config.read('a.ini')
#查看所有的標題
res=config.sections() #['section1', 'section2']
print(res)#查看標題section1下所有key=value的key
options=config.options('section1')
print(options) #['k1', 'k2', 'user', 'age', 'is_admin', 'salary']#查看標題section1下所有key=value的(key,value)格式
item_list=config.items('section1')
print(item_list) #[('k1', 'v1'), ('k2', 'v2'), ('user', 'egon'), ('age', '18'), ('is_admin', 'true'), ('salary', '31')]#查看標題section1下user的值=>字符串格式
val=config.get('section1','user')
print(val) #egon#查看標題section1下age的值=>整數格式
val1=config.getint('section1','age')
print(val1) #18#查看標題section1下is_admin的值=>布爾值格式
val2=config.getboolean('section1','is_admin')
print(val2) #True#查看標題section1下salary的值=>浮點型格式
val3=config.getfloat('section1','salary')
print(val3) #31.0

改寫

import configparser
config=configparser.ConfigParser()
config.read('a.cfg')#刪除整個標題section2
config.remove_section('section2')#刪除標題section1下的某個k1和k2
config.remove_option('section1','k1')
config.remove_option('section1','k2')#判斷是否存在某個標題
print(config.has_section('section1'))#判斷標題section1下是否有user
print(config.has_option('section1',''))#添加一個標題
config.add_section('egon')#在標題egon下添加name=egon,age=18的配置
config.set('egon','name','egon')
config.set('egon','age',18) #報錯,必須是字符串#最后將修改的內容寫入文件,完成最終的修改
config.write(open('a.cfg','w'))

好多軟件的常見文檔格式如下,文件名為test.ini:

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 50022
ForwardX11 = no
php.ini文件的格式也是如此
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_path = /usr/sbin/sendmail -t -i
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off
[Assertion]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]

  

1 獲取所有節點

import configparser
config=configparser.ConfigParser()
config.read('test.ini',encoding='utf-8')
res=config.sections()
print(res)'''
打印結果:
['bitbucket.org', 'topsecret.server.com']
'''

?

2?獲取指定節點下所有的鍵值對

import configparser
config=configparser.ConfigParser()
config.read('test.ini',encoding='utf-8')
res=config.items('bitbucket.org')
print(res)'''
打印結果:(包含DEFAULT以及bitbucket.org這倆標題下所有的items)
[('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'hg')]
'''

3 獲取指定節點下所有的建

import configparser
config=configparser.ConfigParser()
config.read('test.ini',encoding='utf-8')
res=config.options('bitbucket.org')
print(res)'''
打印結果:(包含DEFAULT以及bitbucket.org這倆標題下所有的鍵)
['user', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11']'''

4 獲取指定節點下指定key的值

import configparser
config=configparser.ConfigParser()
config.read('test.ini',encoding='utf-8')
res1=config.get('bitbucket.org','user')res2=config.getint('topsecret.server.com','port')
res3=config.getfloat('topsecret.server.com','port')
res4=config.getboolean('topsecret.server.com','ForwardX11')print(res1)
print(res2)
print(res3)
print(res4)'''
打印結果:
hg
50022
50022.0
False
'''

5 檢查、刪除、添加節點

import configparser
config=configparser.ConfigParser()
config.read('test.ini',encoding='utf-8')#檢查
has_sec=config.has_section('bitbucket.org')
print(has_sec) #打印True#添加節點
config.add_section('egon') #已經存在則報錯
config['egon']['username']='gangdan'
config['egon']['age']='18'
config.write(open('test.ini','w'))#刪除節點
config.remove_section('egon')
config.write(open('test.ini','w'))

6 檢查、刪除、設置指定組內的鍵值對

import configparser
config=configparser.ConfigParser()
config.read('test.ini',encoding='utf-8')#檢查
has_sec=config.has_option('bitbucket.org','user') #bitbucket.org下有一個鍵user
print(has_sec) #打印True#刪除
config.remove_option('DEFAULT','forwardx11')
config.write(open('test.ini','w'))#設置
config.set('bitbucket.org','user','gangdang')
config.write(open('test.ini','w'))

?

復制代碼
import configparserconfig = 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 here
config['DEFAULT']['ForwardX11'] = 'yes'
with open('example.ini', 'w') as configfile:config.write(configfile)
復制代碼

轉載于:https://www.cnblogs.com/wangyinhu/p/7384257.html

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

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

相關文章

自制Unity小游戲TankHero-2D(3)開始玩起來

自制Unity小游戲TankHero-2D(3)開始玩起來 我在做這樣一個坦克游戲,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)這個游戲制作的。僅為學習Unity之用。圖片大部分是自己畫的,少數是從網上搜來的。您可以到我的github頁…

mysql按月分列統計_實現mysql按月統計的教程

mysql有個字段是DATETIME類型,要實現可以按月統計,該怎么寫sql語句?select month(f1) from tt group by month(f1)or select DATE_FORMAT(f1,%m) from tt group by DATE_FORMAT(f1,%m)比如數據庫的為2008-01-15 12:10:…

Log4j的擴展-支持設置最大日志數量的DailyRollingFileAppender

Log4j現在已經被大家熟知了,所有細節都可以在網上查到,Log4j支持Appender,其中DailyRollingFileAppender是被經常用到的Appender之一。在討論今天的主題之前,我們先看下另外一個Appender。 最常用的Appender——RollingFileAppend…

VirtualBox虛擬機安裝CentOS 7

新建虛擬機 因為比較簡單,所以對于VirtualBox就不做過多介紹了,直接下載安裝即可,安裝好之后打開Oracle VM VirtualBox管理器,點擊新建,選擇Red Hat(根據windows主機選擇 32/64 bit,通常會自動識…

mysql 指定賬戶已存在_安裝mysql時告訴我指定的賬戶已存在?

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云數據庫專家保駕護航,為用戶…

C語言:用字符讀取流和輸出流來讀寫入數據。(文本文件)

/* 文件的幾種操作模式: r:只讀 w:只寫 rw:可讀可寫 文件的分類: t:文本文件(字符文件) b:二進制文件(字節文件)注意: 采用只讀方式打開文件時,如果源文件不存在,打開文件會失敗! 采用只寫方式打開文件時,不管源文件存不存在,都不會失敗…

PC 上訪問設備數據庫的方法

通過 .NET 訪問 .sdf 的數據庫的方法: 在 VS2005 IDE 中,創建 SQL MOible 數據庫,編輯表結果和填充數據。 具體是在 Server Explorer 中,右鍵單擊 “Data Connections”,選擇 “Add Connection”,新建一個 …

模板原理和操作數據類的觀點【艱難的一天,慢慢的會過去的】

1.模板原理:視圖類【將數據輸出到模板中,實現對視圖的控制】 smarty的類實現對視圖的控制【展示和smarty的基本語法:smarty需要它的庫進行支持】 面向對象的編程中對象的訪問和類的訪問本質上還是代碼空間的訪問,區別也在于對象的…

mysql 用戶 類別_從mysql里讀取用戶類型

##1、后端1(從mysql里讀取用戶類型):from django import formsfrom django.forms import widgetsfrom django.forms import fieldsfrom app01 import modelsfrom django.forms import ModelChoiceField,ModelMultipleChoiceFieldfrom django.shortcuts import rende…

從C語言到C++成長經歷所得的一些技巧和感悟

我介紹幾個辦法,學習辦法,期望你能找到愛好1。必定要和喜愛編程的,或編程兇猛的,或常常編程的人,在一同,常常探討問題!初學編程會有許多問題呈現,你自己很 難處理 c是我們必定要學的…

老子《道德經》第三十三章

上德不德,是以有德;下德不失德,是以無德。 上德無為而無不為,下德為之而有以為,上仁為之而無以為,上義為之而有以為。 上禮為之而莫之應,則攘臂而扔之。 故失道而后德,失德而后仁&am…

[Spring]-各種標注-零配置

個人學習筆記,記錄了一些比較基礎的標注; 1、controller 控制器(注入服務)2、service 服務(注入dao)3、repository dao(實現dao訪問)4、component pojo實例化到spring容器中&#xf…

mysql弄丟初始密碼_MySql密碼丟失

windows下mysql密碼忘記了第一步:netstat -nat(可以查看mysql是否啟動了,如果啟動了,可以用輸入net stop mysql(或者通過任務管理器結束進程))第二步:mysqld --skip-grant-tables,不要關閉窗口第三步:開啟一…

CodeForces-500C

傳送門 給n本不同重量的一摞書編號1~n。給定m次操作。操作b代表花費標號為b的書上方其他書的重量總和,將書b位移到這疊書的最上方。問初始書應該如何疊放,才能使m次操作后總花費最小 輸入 n本書 m次操作 n個數 書的重量 m個數 操作對象 輸出 …

java基礎篇---網絡編程(UDP程序設計)

UDP程序設計 在TCP的索引操作都必須建立可靠地連接,這樣一來肯定會浪費大量的系統性能,為了減少這種開銷,在網絡中又提供了另外一種傳輸協議---UDP,不可靠的連接,這種協議在各個聊天工具中被廣泛的應用。 咋UDP開發中使用Datagram…

bzoj - 2038: [2009國家集訓隊]小Z的襪子(hose)

題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id2038 莫隊算法可以解決一類不修改、離線查詢問題。而這題可以用莫隊來做。 *我是看這個論文學會的:(鏈接~) 其實莫隊就是一種優化的暴力,只是把查詢都離線預先按照規則…

c++ 靜態變量賦值_Python變量及常量解釋說明

變量(1)在計算機程序中,變量不僅可以是數字,還可以是任意數據類型,變量子啊程序中就是一個變量名表示的,變量名必須是大小寫英文,數字,和"_"的組合,切不能以數字開頭.a 1 #變量a是一個整數1b "shuai" #變量b是一個字符串1c True #變量c是一個布爾值Tru…

Hibernate中session的clear(),flush(),evict()方法詳解

2019獨角獸企業重金招聘Python工程師標準>>> 一、Clear 方法 無論是Load 還是 Get 都會首先查找緩存(一級緩存) 如果沒有,才會去數據庫查找,調用Clear() 方法,可以強制清除Session緩存。例: pub…

快速排序和折半查找

package BinarySerach;import java.util.Scanner;public class BinarySerch {/***折半查找和快速排序*/static final int N 15;static void quickSort(int [] array,int left,int right){int f,t;int ltemp left;int rtemp right;//確定分界值f array[(leftright)/2];while(…

CANVAS運用-對圖片的壓縮上傳(僅針對移動瀏覽器)

最近在移動端設計頭像上傳功能時&#xff0c;原本是以<input type"file">直接通過formData上傳&#xff0c;然而實際使用情況是&#xff1a;對于過大的圖片&#xff08;高像素手機所拍攝的照片等&#xff09;上傳時間過長會導致上傳失敗&#xff0c;而每次都上…