当前位置: 首页 > news >正文

python 网站开发教程安徽建工招标与采购网

python 网站开发教程,安徽建工招标与采购网,做苗木的用什么网站,山西格泰网站建设目录 INI文件 configparser内置库 类与方法 操作实例 导入INI 查询所有节的列表 判断某个节是否存在 查询某个节的所有键的列表 判断节下是否存在某个键 增加节点 删除节点 增加节点的键 修改键值 保存修改结果 获取键值 获取节点所有键值 INI文件 即Initiali…

目录

INI文件

configparser内置库

类与方法

操作实例

导入INI

查询所有节的列表

判断某个节是否存在

查询某个节的所有键的列表

判断节下是否存在某个键

增加节点

删除节点

增加节点的键

修改键值

保存修改结果

获取键值

获取节点所有键值


INI文件

即Initialization File的缩写,是Windows系统配置文件所采用的存储格式,用于统管Windows的各项配置。虽然Windows 95之后引入了注册表的概念,使得许多参数和初始化信息被存储在注册表中,但在某些场合,INI文件仍然具有其不可替代的地位。

INI文件是一种按照特殊方式排列的文本文件,其格式规范包括节(section)、键(name)和值(value)。节用方括号括起来,单独占一行,用于表示一个段落,区分不同用途的参数区。键(也称为属性)单独占一行,用等号连接键名和键值,例如“name=value”。注释使用英文分号(;)开头,单独占一行,分号后面的文字直到该行结尾都作为注释处理。

INI文件在Windows系统中非常常见,其中最重要的是“System.ini”、“System32.ini”和“Win.ini”等文件。这些文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件来改变应用程序和系统的很多配置。当然,我们自己编写程序时也可以把INI文件作为配置和管理参数的工具,比如python中就有内置库configparser可以方便地配置和管理程序的参数。

configparser内置库

类与方法

    Intrinsic defaults can be specified by passing them into the ConfigParser constructor as a dictionary.

    class:

    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.buildout`` 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.

操作实例

就以我电脑上的win.ini的内容作操作对象,为防止乱改windows参数,把win.ini复制到源代码目录中并改名为exam.ini。

; for 16-bit app support
[fonts]
[extensions]
[mci extensions]
[files]
[Mail]
MAPI=1

导入INI

>>> import configparser
>>> parser = configparser.ConfigParser()
>>> parser.read('exam.ini')
['exam.ini']

查询所有节的列表

>>> parser.sections()
['fonts', 'extensions', 'mci extensions', 'files', 'Mail']

判断某个节是否存在

>>> parser.has_section('fonts')
True
>>> parser.has_section('font')
False
>>> parser.has_section('files')
True

查询某个节的所有键的列表

>>> parser.options('Mail')
['mapi']
>>> parser.options('mail')
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    parser.options('mail')
  File "D:\Program Files\Python\Lib\configparser.py", line 661, in options
    raise NoSectionError(section) from None
configparser.NoSectionError: No section: 'mail'
>>> parser.options('files')
[]
>>> parser.options('Files')
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    parser.options('Files')
  File "D:\Program Files\Python\Lib\configparser.py", line 661, in options
    raise NoSectionError(section) from None
configparser.NoSectionError: No section: 'Files'

注意:节名区别字母大小写。

判断节下是否存在某个键

>>> parser.has_option('Mail','mapi')
True
>>> parser.has_option('Mail','Mapi')
True
>>> parser.has_option('Mail','MAPI')
True
>>> parser.has_option('Mail','abc')
False
>>> parser.has_option('Mail','ABC')
False

注意:键名不区别字母大小写。

增加节点

>>> parser.add_section('Names')
>>> parser.sections()
['fonts', 'extensions', 'mci extensions', 'files', 'Mail', 'Names']
>>> parser.add_section('names')
>>> parser.sections()
['fonts', 'extensions', 'mci extensions', 'files', 'Mail', 'Names', 'names']

注意:增加已在节,会抛错DuplicateSectionError(section)

>>> parser.add_section('names')
Traceback (most recent call last):
  File "<pyshell#47>", line 1, in <module>
    parser.add_section('names')
  File "D:\Program Files\Python\Lib\configparser.py", line 1189, in add_section
    super().add_section(section)
  File "D:\Program Files\Python\Lib\configparser.py", line 645, in add_section
    raise DuplicateSectionError(section)
configparser.DuplicateSectionError: Section 'names' already exists

正确用法,配合has_section()一起使用

>>> if not parser.has_section('Level'):
...     parser.add_section('Level')
... 
>>> parser.sections()
['fonts', 'extensions', 'files', 'Mail', 'names', 'Level']

删除节点

>>> parser.sections()
['fonts', 'extensions', 'mci extensions', 'files', 'Mail', 'Names', 'names']
>>> parser.remove_section('Names')
True
>>> parser.remove_section('file')
False
>>> parser.remove_section('mci extensions')
True
>>> parser.sections()
['fonts', 'extensions', 'files', 'Mail', 'names']

注意:是否删除成功,由返回值True或False来判断。

增加节点的键

>>> parser.options('Mail')
['mapi']
>>> if not parser.has_option("Mail", "names"):
...     parser.set("Mail", "names", "")
... 
...     
>>> parser.options('Mail')
['mapi', 'names']

修改键值

与增加键一样用set(),但value参数不为空。

>>> parser.set("Mail", "names", "Hann")

或者写成:

parser.set(section="Mail", option="names", value="Hann")

保存修改结果

>>> parser.write(fp=open('exam.ini', 'w'))

注意:增删等改变ini文件内容的操作都要write才能得到保存。

获取键值

>>> parser.get("Mail", "names")
'Hann'
>>> parser.get("Mail", "Names")
'Hann'
>>> parser.get("mail", "Names")
Traceback (most recent call last):
  File "<pyshell#81>", line 1, in <module>
    parser.get("mail", "Names")
  File "D:\Program Files\Python\Lib\configparser.py", line 759, in get
    d = self._unify_values(section, vars)
  File "D:\Program Files\Python\Lib\configparser.py", line 1130, in _unify_values
    raise NoSectionError(section) from None
configparser.NoSectionError: No section: 'mail'

注意:再次证明节名区别大小写,键名不区别大小写。

获取节点所有键值

>>> parser.items('Mail')
[('mapi', '1'), ('name', '"Hann"'), ('names', 'Tom'), ('kates', '')]

完整示例代码

import configparser  # 创建一个配置解析器  
parser = configparser.ConfigParser()  # 读取INI文件  
parser.read('exam.ini')  # 检查是否成功读取了文件  
if len(parser.sections()) == 0:  print("INI文件为空或未找到指定的节。")  
else:  # 获取所有节的列表  sections = parser.sections()  print("INI文件中的节:")  for section in sections:  print(section)  # 获取指定节下的所有选项  section_name = 'Mail'if section_name in parser:  options = parser[section_name]  print(f"节 '{section_name}' 中的选项:")  for option in options:  print(f"{option}: {parser[section_name][option]}")  # 获取指定节下的单个选项的值  option_name = 'Name'  # 假设我们要获取的选项的名字是 'example_option'  if option_name in options:  value = parser.get(section_name, option_name)  print(f"节 '{section_name}' 中 '{option_name}' 的值为:{value}")  # 修改指定节下的单个选项的值  new_value = 'Name'  parser.set(section_name, option_name, new_value)  print(f"已将节 '{section_name}' 中 '{option_name}' 的值修改为:{new_value}")  # 添加一个新的选项到指定节  new_option_name = 'new_option'  new_option_value = 'option_value'  parser.set(section_name, new_option_name, new_option_value)  print(f"已在节 '{section_name}' 中添加了新选项 '{new_option_name}',其值为:{new_option_value}")  # 删除指定节下的单个选项  parser.remove_option(section_name, new_option_name)  print(f"已删除节 '{section_name}' 中的选项 '{new_option_name}'")  # 添加一个新的节  new_section_name = 'new_section'  parser.add_section(new_section_name)  print(f"已添加新节 '{new_section_name}'")  # 将修改后的配置写回文件  with open('exam.ini', 'w') as configfile:  parser.write(configfile)  print("修改已写回INI文件。")  else:  print(f"INI文件中未找到节 '{section_name}'。")

http://www.sczhlp.com/news/65941/

相关文章:

  • 网上购物商城源代码谷歌优化的最佳方案
  • 网站怎么做排行榜1688一件代发跨境电商
  • 网站备案手机号码百度一下百度网站
  • 苏州外贸网站建设公司价格龙港做网页网站制作
  • 网站建设的技术支持包括宝塔本地wordpress
  • 湘潭网站建设公司有哪些如何自己搞个微信小程序
  • 百度蜘蛛网站网络推广公司简介模板
  • 微信网站上传图片如何把地图放到自己做的网站上
  • 外国人做的关于中国的视频网站网站推广初期目标
  • 网站开发工程师就业形势网络品牌营销策略有哪些
  • 抖音怎么挂小程序赚钱嘉兴seo排名外包
  • 作文大全网站网站宣传和推广的方法有哪些
  • 评估网站建设方案浙江怎样做网站
  • 南宁正规公众号网站建设推广流量卡网站
  • 关于print(torch.cuda.is_available())输出为False的错误问题
  • [豪の学习笔记] 软考中级备考 基础复习#1
  • 百度网站提交收录项目计划书ppt
  • 平原县网站seo优化排名注册公司新规定最新2024
  • cms如何做中英网站海澜之家网站建设水平
  • 中小型企业网站建设与管理广东中山网站建设 光龙
  • 网站建设心得总结网络营销策略实施的步骤
  • 浙江金华网站建设宁德网站建设制作
  • 某网站注册需要邮箱是怎么弄做棋牌网站犯法吗
  • 泰安住房和城乡建设局网站网页设计尺寸适应
  • oss做网站迁移网站 ftp信息
  • 杭州自助建站模板下载离婚律师免费咨询
  • 设计师门户网站源码网站开发模板代码
  • 雏鸟app网站推广建企业网站需要哪些资料
  • 2025最新整理Notepad++v8.6免费版下载安装教程(附安装包)
  • ACL 2024大语言模型研究速览