欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python利用configparser對(duì)配置文件進(jìn)行讀寫(xiě)操作

 更新時(shí)間:2020年11月03日 11:15:22   作者:Kearney form An idea  
這篇文章主要介紹了詳解Python利用configparser對(duì)配置文件進(jìn)行讀寫(xiě)操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

簡(jiǎn)介

想寫(xiě)一個(gè)登錄注冊(cè)的demo,但是以前的demo數(shù)據(jù)都寫(xiě)在程序里面,每一關(guān)掉程序數(shù)據(jù)就沒(méi)保存住。。
于是想著寫(xiě)到配置文件里好了
Python自身提供了一個(gè)Module - configparser,來(lái)進(jìn)行對(duì)配置文件的讀寫(xiě)

Configuration file parser.
A configuration file consists of sections, lead by a “[section]” header,
and followed by “name: value” entries, with continuations and such in
the style of RFC 822.

Note The ConfigParser module has been renamed to configparser in Python 3. The 2to3 tool will automatically adapt imports when converting your sources to Python 3.

在py2中,該模塊叫ConfigParser,在py3中把字母全變成了小寫(xiě)。本文以py3為例

類(lèi)

ConfigParser的屬性和方法

ConfigParser -- responsible for parsing a list of
   configuration files, and managing the parsed database.
 
 methods:
 
 __init__(defaults=None, dict_type=_default_dict, allow_no_value=False,
  delimiters=('=', ':'), comment_prefixes=('#', ';'),
  inline_comment_prefixes=None, strict=True,
  empty_lines_in_values=True, default_section='DEFAULT',
  interpolation=<unset>, converters=<unset>):
 Create the parser. When `defaults' is given, it is initialized into the
 dictionary or intrinsic defaults. The keys must be strings, the values
 must be appropriate for %()s string interpolation.
 
 When `dict_type' is given, it will be used to create the dictionary
 objects for the list of sections, for the options within a section, and
 for the default values.
 
 When `delimiters' is given, it will be used as the set of substrings
 that divide keys from values.
 
 When `comment_prefixes' is given, it will be used as the set of
 substrings that prefix comments in empty lines. Comments can be
 indented.
 
 When `inline_comment_prefixes' is given, it will be used as the set of
 substrings that prefix comments in non-empty lines.
 
 When `strict` is True, the parser won't allow for any section or option
 duplicates while reading from a single source (file, string or
 dictionary). Default is True.
 
 When `empty_lines_in_values' is False (default: True), each empty line
 marks the end of an option. Otherwise, internal empty lines of
 a multiline option are kept as part of the value.
 
 When `allow_no_value' is True (default: False), options without
 values are accepted; the value presented for these is None.
 
 When `default_section' is given, the name of the special section is
 named accordingly. By default it is called ``"DEFAULT"`` but this can
 be customized to point to any other valid section name. Its current
 value can be retrieved using the ``parser_instance.default_section``
 attribute and may be modified at runtime.
 
 When `interpolation` is given, it should be an Interpolation subclass
 instance. It will be used as the handler for option value
 pre-processing when using getters. RawConfigParser objects don't do
 any sort of interpolation, whereas ConfigParser uses an instance of
 BasicInterpolation. The library also provides a ``zc.buildbot``
 inspired ExtendedInterpolation implementation.
 
 When `converters` is given, it should be a dictionary where each key
 represents the name of a type converter and each value is a callable
 implementing the conversion from string to the desired datatype. Every
 converter gets its corresponding get*() method on the parser object and
 section proxies.
 
 sections()
 Return all the configuration section names, sans DEFAULT.
 
 has_section(section)
 Return whether the given section exists.
 
 has_option(section, option)
 Return whether the given option exists in the given section.
 
 options(section)
 Return list of configuration options for the named section.
 
 read(filenames, encoding=None)
 Read and parse the iterable of named configuration files, given by
 name. A single filename is also allowed. Non-existing files
 are ignored. Return list of successfully read files.
 
 read_file(f, filename=None)
 Read and parse one configuration file, given as a file object.
 The filename defaults to f.name; it is only used in error
 messages (if f has no `name' attribute, the string `<???>' is used).
 
 read_string(string)
 Read configuration from a given string.
 
 read_dict(dictionary)
 Read configuration from a dictionary. Keys are section names,
 values are dictionaries with keys and values that should be present
 in the section. If the used dictionary type preserves order, sections
 and their keys will be added in order. Values are automatically
 converted to strings.
 
 get(section, option, raw=False, vars=None, fallback=_UNSET)
 Return a string value for the named option. All % interpolations are
 expanded in the return values, based on the defaults passed into the
 constructor and the DEFAULT section. Additional substitutions may be
 provided using the `vars' argument, which must be a dictionary whose
 contents override any pre-existing defaults. If `option' is a key in
 `vars', the value from `vars' is used.
 
 getint(section, options, raw=False, vars=None, fallback=_UNSET)
 Like get(), but convert value to an integer.
 
 getfloat(section, options, raw=False, vars=None, fallback=_UNSET)
 Like get(), but convert value to a float.
 
 getboolean(section, options, raw=False, vars=None, fallback=_UNSET)
 Like get(), but convert value to a boolean (currently case
 insensitively defined as 0, false, no, off for False, and 1, true,
 yes, on for True). Returns False or True.
 
 items(section=_UNSET, raw=False, vars=None)
 If section is given, return a list of tuples with (name, value) for
 each option in the section. Otherwise, return a list of tuples with
 (section_name, section_proxy) for each section, including DEFAULTSECT.
 
 remove_section(section)
 Remove the given file section and all its options.
 
 remove_option(section, option)
 Remove the given option from the given section.
 
 set(section, option, value)
 Set the given option.
 
 write(fp, space_around_delimiters=True)
 Write the configuration state in .ini format. If
 `space_around_delimiters' is True (the default), delimiters
 between keys and values are surrounded by spaces.

配置文件的數(shù)據(jù)格式

下面的config.ini展示了配置文件的數(shù)據(jù)格式,用中括號(hào)[]括起來(lái)的為一個(gè)section例如Default、Color;每一個(gè)section有多個(gè)option,例如serveraliveinterval、compression等。
option就是我們用來(lái)保存自己數(shù)據(jù)的地方,類(lèi)似于鍵值對(duì) optionname = value 或者是optionname : value (也可以設(shè)置允許空值)

[Default]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes
values like this: 1000000
or this: 3.14159265359
[No Values]
key_without_value
empty string value here =

[Color]
isset = true
version = 1.1.0
orange = 150,100,100
lightgreen = 0,220,0

數(shù)據(jù)類(lèi)型

在py configparser保存的數(shù)據(jù)中,value的值都保存為字符串類(lèi)型,需要自己轉(zhuǎn)換為自己需要的數(shù)據(jù)類(lèi)型

Config parsers do not guess datatypes of values in configuration files, always storing them internally as strings. This means that if you need other datatypes, you should convert on your own:

例如

>>> int(topsecret['Port'])
50022
>>> float(topsecret['CompressionLevel'])
9.0

常用方法method

打開(kāi)配置文件

import configparser

file = 'config.ini'

# 創(chuàng)建配置文件對(duì)象
cfg = configparser.ConfigParser(comment_prefixes='#')
# 讀取配置文件
cfg.read(file, encoding='utf-8')

這里只打開(kāi)不做什么讀取和改變

讀取配置文件的所有section

file處替換為對(duì)應(yīng)的配置文件即可

import configparser

file = 'config.ini'
cfg = configparser.ConfigParser(comment_prefixes='#')
cfg.read(file, encoding='utf-8')

# 獲取所有section
sections = cfg.sections()
# 顯示讀取的section結(jié)果
print(sections)

判斷有沒(méi)有對(duì)應(yīng)的section!!!

當(dāng)沒(méi)有對(duì)應(yīng)的section就直接操作時(shí)程序會(huì)非正常結(jié)束

import configparser

file = 'config.ini'
cfg = configparser.ConfigParser(comment_prefixes='#')
cfg.read(file, encoding='utf-8')
if cfg.has_section("Default"): # 有沒(méi)有"Default" section
 print("存在Defaul section")
else:
	print("不存在Defaul section")	

判斷section下對(duì)應(yīng)的Option

import configparser

file = 'config.ini'
cfg = configparser.ConfigParser(comment_prefixes='#')
cfg.read(file, encoding='utf-8')
# 檢測(cè)Default section下有沒(méi)有"CompressionLevel" option
if cfg.cfg.has_option('Default', 'CompressionLevel'): 
 print("存在CompressionLevel option")
else:
	print("不存在CompressionLevel option")	 

添加section和option

最最重要的事情: 最后一定要寫(xiě)入文件保存?。?!不然程序修改的結(jié)果不會(huì)修改到文件里

  • 添加section前要檢測(cè)是否存在,否則存在重名的話(huà)就會(huì)報(bào)錯(cuò)程序非正常結(jié)束
  • 添加option前要確定section存在,否則同1

option在修改時(shí)不存在該option就會(huì)創(chuàng)建該option

import configparser

file = 'config.ini'
cfg = configparser.ConfigParser(comment_prefixes='#')
cfg.read(file, encoding='utf-8')

if not cfg.has_section("Color"): # 不存在Color section就創(chuàng)建
 cfg.add_section('Color')

# 設(shè)置sectin下的option的value,如果section不存在就會(huì)報(bào)錯(cuò)
cfg.set('Color', 'isset', 'true')
cfg.set('Color', 'version', '1.1.0') 
cfg.set('Color', 'orange', '150,100,100')

# 把所作的修改寫(xiě)入配置文件
with open(file, 'w', encoding='utf-8') as configfile:
 cfg.write(configfile)

刪除option

import configparser

file = 'config.ini'
cfg = configparser.ConfigParser(comment_prefixes='#')
cfg.read(file, encoding='utf-8')

cfg.remove_option('Default', 'CompressionLevel'

# 把所作的修改寫(xiě)入配置文件
with open(file, 'w', encoding='utf-8') as configfile:
 cfg.write(configfile)

刪除section

刪除section的時(shí)候會(huì)遞歸自動(dòng)刪除該section下面的所有option,慎重使用

import configparser

file = 'config.ini'
cfg = configparser.ConfigParser(comment_prefixes='#')
cfg.read(file, encoding='utf-8')

cfg.remove_section('Default')

# 把所作的修改寫(xiě)入配置文件
with open(file, 'w', encoding='utf-8') as configfile:
 cfg.write(configfile)

實(shí)例

創(chuàng)建一個(gè)配置文件

import configparser

file = 'config.ini'

# 創(chuàng)建配置文件對(duì)象
cfg = configparser.ConfigParser(comment_prefixes='#')
# 讀取配置文件
cfg.read(file, encoding='utf-8')```

# 實(shí)例
## 創(chuàng)建一個(gè)配置文件
下面的demo介紹了如何檢測(cè)添加section和設(shè)置value
```python
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : file.py
@Desc : 使用configparser讀寫(xiě)配置文件demo
@Author : Kearney
@Contact : 191615342@qq.com
@Version : 0.0.0
@License : GPL-3.0
@Time : 2020/10/20 10:23:52
'''
import configparser

file = 'config.ini'

# 創(chuàng)建配置文件對(duì)象
cfg = configparser.ConfigParser(comment_prefixes='#')
# 讀取配置文件
cfg.read(file, encoding='utf-8')

if not cfg.has_section("Default"): # 有沒(méi)有"Default" section
 cfg.add_section("Default") # 沒(méi)有就創(chuàng)建

# 設(shè)置"Default" section下的option的value
# 如果這個(gè)section不存在就會(huì)報(bào)錯(cuò),所以上面要檢測(cè)和創(chuàng)建
cfg.set('Default', 'ServerAliveInterval', '45')
cfg.set('Default', 'Compression', 'yes')
cfg.set('Default', 'CompressionLevel', '9')
cfg.set('Default', 'ForwardX11', 'yes')

if not cfg.has_section("Color"): # 不存在Color就創(chuàng)建
 cfg.add_section('Color')

# 設(shè)置sectin下的option的value,如果section不存在就會(huì)報(bào)錯(cuò)
cfg.set('Color', 'isset', 'true')
cfg.set('Color', 'version', '1.1.0') 
cfg.set('Color', 'orange', '150,100,100')
cfg.set('Color', 'lightgreen', '0,220,0')

if not cfg.has_section("User"): 
 cfg.add_section('User')

cfg.set('User', 'iscrypted', 'false')
cfg.set('User', 'Kearney', '191615342@qq.com')
cfg.set('User', 'Tony', 'backmountain@gmail.com')

# 把所作的修改寫(xiě)入配置文件,并不是完全覆蓋文件
with open(file, 'w', encoding='utf-8') as configfile:
 cfg.write(configfile)

跑上面的程序就會(huì)創(chuàng)建一個(gè)config.ini的配置文件,然后添加section和option-value
文件內(nèi)容如下所示

[Default]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes

[Color]
isset = true
version = 1.1.0
orange = 150,100,100
lightgreen = 0,220,0

[User]
iscrypted = false
kearney = 191615342@qq.com
tony = backmountain@gmail.com

References

Configuration file parser - py2
Configuration file parser - py3
python讀取配置文件(ini、yaml、xml)-ini只讀不寫(xiě)。。
python 編寫(xiě)配置文件 - open不規(guī)范,注釋和上一篇參考沖突

到此這篇關(guān)于詳解Python利用configparser對(duì)配置文件進(jìn)行讀寫(xiě)操作的文章就介紹到這了,更多相關(guān)Python configparser配置文件讀寫(xiě)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Python實(shí)現(xiàn)KNN分類(lèi)算法

    用Python實(shí)現(xiàn)KNN分類(lèi)算法

    這篇文章主要為大家詳細(xì)介紹了用Python實(shí)現(xiàn)KNN分類(lèi)算法的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python使用win32com.client的方法示例

    Python使用win32com.client的方法示例

    本文主要介紹了Python使用win32com.client的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 一篇教程教你學(xué)會(huì)Python進(jìn)制轉(zhuǎn)換(十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十六進(jìn)制)

    一篇教程教你學(xué)會(huì)Python進(jìn)制轉(zhuǎn)換(十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十六進(jìn)制)

    計(jì)算機(jī)中只有1和0,所以就導(dǎo)致很多時(shí)候需要進(jìn)制轉(zhuǎn)換,本文介紹了Python進(jìn)制轉(zhuǎn)換,十進(jìn)制轉(zhuǎn)二進(jìn)制,十進(jìn)制轉(zhuǎn)八進(jìn)制,十進(jìn)制轉(zhuǎn)十六進(jìn)制,有興趣的可以了解一下
    2021-05-05
  • Django中日期處理注意事項(xiàng)與自定義時(shí)間格式轉(zhuǎn)換詳解

    Django中日期處理注意事項(xiàng)與自定義時(shí)間格式轉(zhuǎn)換詳解

    這篇文章主要給大家介紹了關(guān)于Django中日期處理注意事項(xiàng)與自定義時(shí)間格式轉(zhuǎn)換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Python match語(yǔ)句的具體使用

    Python match語(yǔ)句的具體使用

    match語(yǔ)句接受一個(gè)表達(dá)式,并將其值與作為一個(gè)或多個(gè)case塊給出的連續(xù)模式進(jìn)行比較,本文主要介紹了Python match語(yǔ)句的具體使用,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 基于python編寫(xiě)的微博應(yīng)用

    基于python編寫(xiě)的微博應(yīng)用

    這篇文章主要介紹了基于python編寫(xiě)的微博應(yīng)用,是針對(duì)微博開(kāi)放平臺(tái)SDK開(kāi)發(fā)的具體應(yīng)用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • 解決Pytorch在測(cè)試與訓(xùn)練過(guò)程中的驗(yàn)證結(jié)果不一致問(wèn)題

    解決Pytorch在測(cè)試與訓(xùn)練過(guò)程中的驗(yàn)證結(jié)果不一致問(wèn)題

    這篇文章主要介紹了解決Pytorch在測(cè)試與訓(xùn)練過(guò)程中的驗(yàn)證結(jié)果不一致問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Python實(shí)現(xiàn)字符串反轉(zhuǎn)的9種方法(最全)

    Python實(shí)現(xiàn)字符串反轉(zhuǎn)的9種方法(最全)

    本文主要介紹了Python實(shí)現(xiàn)字符串反轉(zhuǎn)的9種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • PyCharm專(zhuān)業(yè)最新版2019.1安裝步驟(含激活碼)

    PyCharm專(zhuān)業(yè)最新版2019.1安裝步驟(含激活碼)

    這篇文章主要介紹了PyCharm專(zhuān)業(yè)最新版2019.1安裝步驟(含激活碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 一篇文章帶你搞定Python多進(jìn)程

    一篇文章帶你搞定Python多進(jìn)程

    Python中的多進(jìn)程是通過(guò)multiprocessing包來(lái)實(shí)現(xiàn)的,和多線(xiàn)程的threading.Thread差不多,它可以利用multiprocessing.Process對(duì)象來(lái)創(chuàng)建一個(gè)進(jìn)程對(duì)象。本文將帶你深入了解Python多線(xiàn)程,需要的可以參考一下
    2022-01-01

最新評(píng)論