色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

詳解Python利用configparser對配置文件進行讀寫操作

瀏覽:29日期:2022-07-06 14:32:15

簡介

想寫一個登錄注冊的demo,但是以前的demo數據都寫在程序里面,每一關掉程序數據就沒保存住。。于是想著寫到配置文件里好了Python自身提供了一個Module - configparser,來進行對配置文件的讀寫

Configuration file parser.A configuration file consists of sections, lead by a “[section]” header,and followed by “name: value” entries, with continuations and such inthe 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中把字母全變成了小寫。本文以py3為例

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.

配置文件的數據格式

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

[Default]serveraliveinterval = 45compression = yescompressionlevel = 9forwardx11 = yesvalues like this: 1000000or this: 3.14159265359[No Values]key_without_valueempty string value here =[Color]isset = trueversion = 1.1.0orange = 150,100,100lightgreen = 0,220,0

數據類型

在py configparser保存的數據中,value的值都保存為字符串類型,需要自己轉換為自己需要的數據類型

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

打開配置文件

import configparserfile = ’config.ini’# 創建配置文件對象cfg = configparser.ConfigParser(comment_prefixes=’#’)# 讀取配置文件cfg.read(file, encoding=’utf-8’)

這里只打開不做什么讀取和改變

讀取配置文件的所有section

file處替換為對應的配置文件即可

import configparserfile = ’config.ini’cfg = configparser.ConfigParser(comment_prefixes=’#’)cfg.read(file, encoding=’utf-8’)# 獲取所有sectionsections = cfg.sections()# 顯示讀取的section結果print(sections)

判斷有沒有對應的section!!!

當沒有對應的section就直接操作時程序會非正常結束

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

判斷section下對應的Option

import configparserfile = ’config.ini’cfg = configparser.ConfigParser(comment_prefixes=’#’)cfg.read(file, encoding=’utf-8’)# 檢測Default section下有沒有'CompressionLevel' optionif cfg.cfg.has_option(’Default’, ’CompressionLevel’): print('存在CompressionLevel option')else:print('不存在CompressionLevel option')

添加section和option

最最重要的事情: 最后一定要寫入文件保存!!!不然程序修改的結果不會修改到文件里

添加section前要檢測是否存在,否則存在重名的話就會報錯程序非正常結束 添加option前要確定section存在,否則同1

option在修改時不存在該option就會創建該option

import configparserfile = ’config.ini’cfg = configparser.ConfigParser(comment_prefixes=’#’)cfg.read(file, encoding=’utf-8’)if not cfg.has_section('Color'): # 不存在Color section就創建 cfg.add_section(’Color’)# 設置sectin下的option的value,如果section不存在就會報錯cfg.set(’Color’, ’isset’, ’true’)cfg.set(’Color’, ’version’, ’1.1.0’) cfg.set(’Color’, ’orange’, ’150,100,100’)# 把所作的修改寫入配置文件with open(file, ’w’, encoding=’utf-8’) as configfile: cfg.write(configfile)

刪除option

import configparserfile = ’config.ini’cfg = configparser.ConfigParser(comment_prefixes=’#’)cfg.read(file, encoding=’utf-8’)cfg.remove_option(’Default’, ’CompressionLevel’# 把所作的修改寫入配置文件with open(file, ’w’, encoding=’utf-8’) as configfile: cfg.write(configfile)

刪除section

刪除section的時候會遞歸自動刪除該section下面的所有option,慎重使用

import configparserfile = ’config.ini’cfg = configparser.ConfigParser(comment_prefixes=’#’)cfg.read(file, encoding=’utf-8’)cfg.remove_section(’Default’)# 把所作的修改寫入配置文件with open(file, ’w’, encoding=’utf-8’) as configfile: cfg.write(configfile)

實例

創建一個配置文件

import configparserfile = ’config.ini’# 創建配置文件對象cfg = configparser.ConfigParser(comment_prefixes=’#’)# 讀取配置文件cfg.read(file, encoding=’utf-8’)```# 實例## 創建一個配置文件下面的demo介紹了如何檢測添加section和設置value```python#!/usr/bin/env python# -*- encoding: utf-8 -*-’’’@File : file.py@Desc : 使用configparser讀寫配置文件demo@Author : Kearney@Contact : 191615342@qq.com@Version : 0.0.0@License : GPL-3.0@Time : 2020/10/20 10:23:52’’’import configparserfile = ’config.ini’# 創建配置文件對象cfg = configparser.ConfigParser(comment_prefixes=’#’)# 讀取配置文件cfg.read(file, encoding=’utf-8’)if not cfg.has_section('Default'): # 有沒有'Default' section cfg.add_section('Default') # 沒有就創建# 設置'Default' section下的option的value# 如果這個section不存在就會報錯,所以上面要檢測和創建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就創建 cfg.add_section(’Color’)# 設置sectin下的option的value,如果section不存在就會報錯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’)# 把所作的修改寫入配置文件,并不是完全覆蓋文件with open(file, ’w’, encoding=’utf-8’) as configfile: cfg.write(configfile)

跑上面的程序就會創建一個config.ini的配置文件,然后添加section和option-value文件內容如下所示

[Default]serveraliveinterval = 45compression = yescompressionlevel = 9forwardx11 = yes[Color]isset = trueversion = 1.1.0orange = 150,100,100lightgreen = 0,220,0[User]iscrypted = falsekearney = 191615342@qq.comtony = backmountain@gmail.com

References

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

到此這篇關于詳解Python利用configparser對配置文件進行讀寫操作的文章就介紹到這了,更多相關Python configparser配置文件讀寫內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日本特黄a级高清免费酷网 日本特黄特色 | 亚洲精品一二三 | 成网站在线观看人免费 | 视频在线二区 | 欧美粗又大gay69视频 | 亚洲加勒比久久88色综合一区 | 国产三级小视频在线观看 | 国产v片成人影院在线观看 国产v片在线播放免费观 | 99在线观看精品 | 欧美一区二区高清 | 午夜成人免费影院 | 欧美亚洲影院 | 福利岛国深夜在线 | 激情五月色播五月 | 亚洲乱码国产一区网址 | 国产精品免费一区二区三区四区 | 亚洲国产精品综合久久20 | 国产成人精品综合久久久 | 日本久久精品视频 | 亚州a| 国内高清久久久久久久久 | 91精品国产免费久久久久久 | 国产成人高清精品免费5388密 | 国产精品观看 | 日本三级成人午夜视频网 | 日本久久精品 | 狠狠色婷婷丁香综合久久韩国 | 极品丝袜高跟91白沙发在线 | 亚洲精品久久玖玖玖玖 | 国产步兵社区视频在线观看 | 亚洲人的天堂男人爽爽爽 | 一级美女黄色片 | 欧美成人午夜毛片免费影院 | 毛片网站大全 | 国产一区在线播放 | 亚洲国产精品网 | 黄网站免费在线 | a一级特黄日本大片 s色 | 天天摸天天爽视频69视频 | 免费观看成人www精品视频在线 | 91香蕉国产在线观看免费永久 |