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. RAID级别简介

    独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(RAID, Redundant Array of Inexpensive ...

  2. Haybale Guessing

    Haybale Guessing Time Limit: 1000MS   Memory Limit: 65536K       Description The cows, who always ha ...

  3. BZOJ1191 超级英雄Hero (匈牙利算法)

    直接跑匈牙利,注意到“只有当选手正确回答一道题后,才能进入下一题,否则就被淘汰”,一旦无法满足就直接退出. #include <cstdio> #include <algorithm ...

  4. hdu_1049_Climbing Worm_201311061331

    Climbing Worm Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  5. N天学习一个linux命令之vmstat

    用途 查看系统资源整体使用情况,包括进程数量,CPU,内存,IO,swap等资源统计信息 用法 vmstat [options] [delay [ count]] 常用选项 -a 显示active/i ...

  6. 清楚windows 网络密码

    在windows上访问其它机器共享的文件时,第一次通常要输入用户名密码. 第二次再访问就不用了,因为windows会记住这个用户名和密码.  这样虽然很方便,不过有时也会有些问题.比如你想用其它的用户 ...

  7. spring mvc源码-》MultipartReques类-》主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。

    spring mvc源码->MultipartReques类-> MultipartReques类主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multi ...

  8. 权限问题导致无法删除ftp文件

    首先吐槽一下,使用新版编辑器,发了两遍愣是time out,果断放弃 这个文章也是一件小事,大致说一下: 有一个java操作ftp文件的程序,运行删除时,总是返回false,也没有报错.開始考虑是没有 ...

  9. Android学习笔记之:android更新ui的几种经常用法

    Android主线程不能运行耗时操作.我们通常是在子线程中运行耗时操作, 我们在运行完耗时操作后,我们一般能够通过下面几种方式来实现ui界面的更新. 首先是布局文件: <LinearLayout ...

  10. linux下多线程的调试

    多线程调试的基本命令(均在gdb命令行使用):    info threads ---- 显示当前可调试的全部线程.每个线程都有自己的线程ID,显示结果中前面有*的表示当前调试的线程.    eg: ...