Python读写配置文件:

1.创建配置文件(文件名以.conf或.ini结束的文件表示配置文件)

2.导入所需模块 OS, configparser

>>> import os
>>> from configparser import ConfigParser

3.将python工作目录定位到配置文件所在目录 

>>> os.getcwd() #返回当前工作目录
'C:\\Users\\ASUS'
>>> os.chdir("Desktop\\config\\")#切换工作目录
>>> os.getcwd()
'C:\\Users\\ASUS\\Desktop\\config'

4.实例化一个ConfigParser对象用于操作配置文件

>>> cf = ConfigParser()

5.操作配置文件(增删改查)

名词解释:

section:分组名称,使用 [] 表示,如[窗帘]

options:section分组下 一组信息中 等号 左边的值,可以理解为key

读操作:

cf.read(filename)
 返回文件名 列表

>>> cf.read("config.conf")
['config.conf']

当访问的文件名不存在时,返回一个空列表

>>> cf.read(("confi.ini"))
[]

支持传入一个元组,同时打开多个文件

>>> cf.read(("config.ini","config.conf"))
['config.ini', 'config.conf']

cf.sections()

返回一个列表,包含所有分组名称

 >>> cf.sections()
['窗帘', '石头', '游戏角色']

cf.options(section名)
 返回一个列表,元素为: 指定section分组下option名

>>> cf.options("窗帘")
['color', 'width', 'height', 'picture']

cf.get(section名,option名)
返回一个字符串 内容为指定section分组下option所对应的值 (可以理解为Value)

>>> cf.get("窗帘","color")
'pink'

写操作:

创建一个新的日志文件shop.ini

通过os.chdir()确认当前目录下没有shop.ini文件

>>> os.listdir()
['config - 副本.txt', 'config.conf', 'config.ini']

cf.add_section(section名)

添加分组名

>>> cf.add_section("book")

cf.set(section名,option名,value)

添加指定分组下的option与其对应的value

>>> cf.set("book","name","安徒生童话")

补充:

写入的value一定是字符串类型,若要使用数值,也应该是字符型数值,否则会报错

不必担心数据类型的问题,通过get方法,会将字符串对象 转换为我们所需要的类型

通过cf.get方法,读取到的字符型数值 是字符串类型

通过cf.getint()方法会将字符型数值对象 转换为数值型对象

类似的方法还有:'getboolean', 'getfloat'

错误示范:

>>> cf.set("book","price",10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python\Python35\lib\configparser.py", line 1189, in set
self._validate_value_types(option=option, value=value)
File "D:\Python\Python35\lib\configparser.py", line 1174, in _validate_value_types
raise TypeError("option values must be strings")
TypeError: option values must be strings

正确示范:

>>> cf.set("book","price","")

验证 数据类型:

cf.get(section名,option名)返回字符串对象

>>> price = cf.get("book","price")
>>> type(price)
<class 'str'>

cf.getint(section名,option名) 返值数值型对象

>>> p = cf.getint("book","price")
>>> type(p)
<class 'int'>

cf.wirte(fp)

将以上内容写入日志文件(保存到硬盘) 

>>> with open("book.ini","w") as f:
  cf.write(f)

确认创建新的日志文件

>>> os.listdir()
['book.ini', 'config - 副本.txt', 'config.conf', 'config.ini']

补充:

1.直接写操作会生成一个新的日志文件

with open(filename,"w") as f,filename 为当前不存在的名称,会创建一个新的日志文件

2.如修改日志,先read 日志文件,再进行写操作

with open(filename,"w") as f,filename改为要修改的日志名称即可

 声明:原创文章,欢迎转载,转载请注明出处:http://www.cnblogs.com/kaerxifa/p/8688467.html

Python-通过configparser读写配置文件的更多相关文章

  1. python利用ConfigParser读写配置文件

    ConfigParser 是Python自带的模块, 用来读写配置文件, 用法非常简单. 配置文件的格式是: []包含的叫section,    section 下有option=value这样的键值 ...

  2. ConfigParser 读写配置文件

    一.ini: 1..ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式 2.ini文件创建方法: (1)先建立一个记事本文件.(2 ...

  3. 记一次用python 的ConfigParser读取配置文件编码报错

    记一次用python 的ConfigParser读取配置文件编码报错 ...... raise MissingSectionHeaderError(fpname, lineno, line)Confi ...

  4. Python(2.7.6) ConfigParser - 读写配置文件

    Python 标准库的 ConfigParser 模块提供一套 API 来读取和操作配置文件. 配置文件的格式 a) 配置文件中包含一个或多个 section, 每个 section 有自己的 opt ...

  5. Python模块之ConfigParser - 读写配置文件

    Python 标准库的 ConfigParser 模块提供一套 API 来读取和操作配置文件. 配置文件的格式 a) 配置文件中包含一个或多个 section, 每个 section 有自己的 opt ...

  6. Python 用configparser读写ini文件

    一.configparser 简介Python用于读写ini文件的一个官方标准库.具体详见官网链接 二.configparser 部分方法介绍 方法 描述 read(filenames) filesn ...

  7. Python利用ConfigParser读取配置文件

    http://www.2cto.com/kf/201108/100384.html #!/usr/bin/python # -*- coding:utf-8 -*- import ConfigPars ...

  8. 用ConfigParser模块读写配置文件——Python

    对于功能较多.考虑用户体验的程序,配置功能是必不可少的,如何存储程序的各种配置? 1)可以用全局变量,不过全局变量具有易失性,程序崩溃或者关闭之后配置就没了,再者配置太多,将变量分配到哪里也是需要考虑 ...

  9. Python自动化测试 (二) ConfigParser模块读写配置文件

    ConfigParser 是Python自带的模块, 用来读写配置文件, 用法及其简单. 直接上代码,不解释,不多说. 配置文件的格式是: []包含的叫section,    section 下有op ...

随机推荐

  1. Codeforces Round #306 (Div. 2) D

    D. Regular Bridge time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  2. AVPlayer的使用,带缓冲

    #import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewCont ...

  3. http get请求获取server返回的应答数据

    libcurl库中的參数CURLOPT_WRITEFUNCTION所设置的回调函数应该是这种: size_t fun_cb( char *ptr, size_t size, size_t nmemb, ...

  4. WCF学习笔记——配置服务引用

    WCF传过来的东西要序列化. 比如,在WCF服务中,象这么个方法 public IEnumerable<UserItem> GetUserList() 默认情况下,在客户端会调用,是这样: ...

  5. luogu1052 过河

    题目大意 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...

  6. bzoj4950: [Wf2017]Mission Improbable

    跟着靖靖做题%%%%% 这题一看就觉得和之前的某场模拟赛的一道题很像,找假如某行某列的最大值一样的就可以只堆一个,跑匈牙利就行 一开始以为箱子不能移动-_-! 然后有个坑,大家都知道当这个位置有箱子就 ...

  7. dynamic关键字的使用

    https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonConvert.htm 在使用DeserializeObject函数进行 ...

  8. SVM最通俗的解读

    摘自:https://www.zhihu.com/question/21094489/answer/86273196 什么是SVM? 当然首先看一下wiki. Support Vector Machi ...

  9. .sh文件 编写格式

    http://blog.sina.com.cn/s/blog_54f82cc201010hfz.html 介绍: 1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号# ...

  10. Pie(二分)

    http://poj.org/problem?id=3122 题意:将n个圆柱体的不同口味的pie分给m个人,要求每个人分得的pie必须体积相同,且来自于一块pie(即:只分得一种口味的pie),求最 ...