Python的csv文本文件(csv模块)和ini文本文件(configparser模块)处理

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.csv文件

1>.CSV文件简介

  逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
  
  CSV是一个被行分隔符,列分隔符划分成行和列的文本文件。   CSV不指定字符编码。   行分隔符为"\r\n",最后一行可以没有换行符。   列分隔符常为逗号或者制表符。   每一行称为一条记录record。   字段可以使用双引号括起来,也可以不使用。如果字段中出现了双引号,逗号,换行符必须使用双引号括起来。如果字段的值是双引号,使用两个双引号表示一个转义。   表头可选,和字段列对其就行了。

2>.EXCEL默认语法

delimiter
  列分隔符,默认为逗号(",")
lineterminator
  行分隔符,windows默认为"\r\n" qutechar
  字段的引用符号,缺省为双引号. 双引号的处理
  doublequote双引号的处理,默认为True。如果碰到数据中有双引号,而quotechar也是双引号,True则使用2个双引号表示,False表示使用转义字符作为双引号的前缀。
  escapechar一个转义字符,默认为None。
  writer=csv.writer(f,doublequto=Flase,escapechar='@')遇到双引号,则必须提供转义字符 qutoing指定双引号的规则
  QUOTE_ALL所有字段
  QUOTE_MINIMAL特殊字符字段,Excel方言使用该规则
  QUOTE_NONNUMERIC非数字字段
  QUOTE_NONE都不使用引号。

3>.手动生成CSV文件

 #!/usr/bin/env python
#_*_conding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie from pathlib import Path file_path = Path(r"E:\temp\test\test.csv") parent = file_path.parent if not parent.exists():
parent.mkdir(parents=True) csv_body="""\
id,name,age,comment
1,jason,19,"I'm 19"
2,Tom,20,"this is a ""test"" string."
3,YinZhengjie,23,"尹正杰到此一游!"
""" file_path.write_text(csv_body)

4>.Python中的CSV模块使用案例 

 #!/usr/bin/env python
#_*_conding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie import csv
from pathlib import Path file_path = Path(r"E:\temp\test\test.csv") with open(str(file_path)) as f:
"""
csv的reader函数返回一个reader对象,它是一个迭代器。
"""
reader = csv.reader(f)
print(next(reader))
print(next(reader))
for line in reader:
print(line) #说明row行,需要一个可迭代对象就可以,可迭代的每一个元素,将作为csv行的每一个元素。
rows = [
[4,"jerry",22,"jerry"],
[5,"hdfs",16,"Hadoop"],
[(1,),(2,)],
"这是字符串"
] row = rows[0] """
windows下会在每行末尾多出一个"\r",解决办法就是: newline=""
"""
with open(str(file_path),"a",newline="") as f:
"""
csv的writer函数返回的是一个DictWrite的实例。
主要方法有writerow和writerows,但需要注意我们在使用该方法时需要对文件有相应的处理权限哟~
"""
writer =csv.writer(f)
writer.writerow(row)
writer.writerows(rows)

二.ini文件

1>.ini文件格式说明

  作为配置文件,ini文件格式的很流行。比如我们非常熟悉的MySQL数据库的配置文件就是使用更多这种文件格式。接下来我们来看一组案例。

[DEFAULT]
a = test [mysql]
default-charcter-set = utf8 [mysqld]
datadir = /dbserver/data
port = 33060
character-set-server = utf8
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES   接下来我们对上面一段ini格式的文件进行一个简单说明:
    中括号里面的部分称为section,译作为节,区,段。
    每一个section内,都是key=value形成的键值对,key称为option选项。
    注意,这里的DEFAULT是缺省的section的名字,必须大写。

2>.Python中的ConfigParser模块使用案例

 #!/usr/bin/env python
#_*_conding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie from configparser import ConfigParser filename = "test.ini"
newfilename = "mysql.ini" cfg = ConfigParser()
"""
方法签名为:
def read(self, filenames, encoding=None)
读取ini文件,可以是单个文件,也可以是文件列表。可以指定文件编码。通过查看源码发现返回的是需要读取的文件列表。
"""
read_ok = cfg.read(filename,encoding="utf8")
print(read_ok) print(cfg.sections()) #返回section列表,缺省section不包括在内。
print(cfg.has_section("client")) #判断section是否存在 for k,v in cfg.items(): #这里没有指定section,则返回所有section名字及其对象
print(k,type(k))
print(v,type(v))
print(cfg.items(k)) #咱们这里指定了section名称,则返回这个指定section的键值对组成的二元组。
print() print("*" * 20 + "我是分隔符" + "*" * 20) tmp = cfg.get("mysqld","port") #从指定的段的选项取值,如果找到就返回,如果没有找到就去DEFAULT段找
print(type(tmp),tmp)
tmp = cfg.get("mysqld","yinzhengjie",fallback="python") #如果没有找到我们可以让他返回特定的字符串。
print(type(tmp),tmp)
tmp = cfg.getint("mysqld","port") #和get方法类似,只不过它返回指定数据类型。
print(type(tmp),tmp) if cfg.has_section("test"): #判断是否存在"test"这个section
cfg.remove_option("test") #移除"test"这个section,当然我们还可以在后面加一个参数,用来移除"test"下的某个option。 cfg.add_section("students") #添加一个students的section名称,下面就是为该section设置option属性
cfg.set("students","name","yinzhengjie")
cfg.set("students","age","")
cfg.set("students","habby","LOL") with open(newfilename,"w") as f: #
cfg.write(f)

Python的csv文件(csv模块)和ini文件(configparser模块)处理的更多相关文章

  1. python中configparser模块读取ini文件

    python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...

  2. 向php文件中添加php.ini文件

    向php文件中添加php.ini文件 默认情况下,php是没有php.ini配置文件的,必须手工添加php.ini文件 在php安装目录中,复制php.ini文件到/usr/local/php/lib ...

  3. C#中选中指定文件并读取类似ini文件的内容

    一.背景 由于项目中需要去读取设备的配置信息,配置文件的内容和INI配置文件的格式类似,所以可以按照INI文件的方式来处理.涉及如何打开一个文件,获取打开的文件的路径问题,并读取选中的文件里边的内容. ...

  4. C# 使用文件流来读写ini文件

    背景 之前采用ini文件作为程序的配置文件,觉得这种结构简单明了,配置起来也挺方便.然后操作方式是通过WindowsAPI,然后再网上找到一个基于WindowsAPI封装的help类,用起来倒也顺手. ...

  5. python基础——15(加密、excel操作、ini文件操作、xml操作模块及数据格式分类)

    一.加密模块 1.有解密的加密方式(base64) #base64加密 import base64 str_encrypt = input("输入要加密的字符串:\n") base ...

  6. Python中.ini文件使用

    .ini文件 一般用来配置常量或者数据库链接语句等,是纯文本格式,所以可以用纯文本编辑器来编辑其内容. ;文件格式如下 ;注释用分号开头,setion 节 [setion] key = value s ...

  7. Python基础之读取ini文件

    基本使用方法 第一步:准备一份INI文件.如test1.ini [ITEMS] item1=1 item2=2 item3=3 item4=4 [ITEM1] test1=aaa [ITEM2] te ...

  8. python操作ini文件

    简介 ini文件作为常见的配置文件,因此需要对ini文件做处理,此处使用configparser模块,本文介绍以下ini文件常用的处理方式. 需要读取的ini文件 如下文件,[ ]包含的称为secti ...

  9. python:实例化configparser模块读写配置文件

    之前的博客介绍过利用python的configparser模块读写配置文件的基础用法,这篇博客,介绍下如何实例化,方便作为公共类调用. 实例化的好处有很多,既方便调用,又降低了脚本的维护成本,而且提高 ...

  10. python:利用configparser模块读写配置文件

    在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可. 这篇博客,介绍下python中利用configpars ...

随机推荐

  1. Operation之过滤操作符

    filter 该操作符就是用来过滤掉某些不符合要求的事件 Observable.of(2, 30, 22, 5, 60, 3, 40, 9) .filter{ $0 > 10 } .subscr ...

  2. Houdini Python开发实战 课程笔记

    P2 + P3 + P4 + P5 - 基础: 1. Houdini中使用Python的地方 2. Textport:可使用cd.ls等路径操作的命令(命令前加%,可在python中使用) 3. So ...

  3. [转]Mathjax语法总结

    链接地址:https://blog.csdn.net/ajacker/article/details/80301378

  4. replace into 详解 update mysql

    转replace 与 update 区分本文主要对比一下 Sqlite 中的 replace 语句和 update 语句 . 在本例中使用如下数据库表:   图1 该表的表名为student, 存储学 ...

  5. pdf转换成jpg不清晰怎么办

    用Photoshop打开pdf文件,然后用“文件”-“另存为”“JPG”.

  6. 【Spring Boot学习之一】Spring Boot简介

    环境 Java1.8 Spring Boot 1.3.2 一.Spring Boot特点1.使用java运行项目,内置tomcat,无需外部容器:2.减少XML配置,使用properties文件和注解 ...

  7. XGBoost中参数调整的完整指南(包含Python中的代码)

    (搬运)XGBoost中参数调整的完整指南(包含Python中的代码) AARSHAY JAIN, 2016年3月1日     介绍 如果事情不适合预测建模,请使用XGboost.XGBoost算法已 ...

  8. PAt 1099

    1099 Build A Binary Search Tree (30 分)   A Binary Search Tree (BST) is recursively defined as a bina ...

  9. 001 SringBoot基础知识及SpringBoot整合Mybatis

    1.原有Spring优缺点分析 (1)优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品.无需开发重量级的Enterprise J ...

  10. 利用nginx搭建文件服务器

    1.安装nginx 安装教程:https://www.cnblogs.com/sunny1009/p/11411673.html 2.配置nginx 配置server节点下的location部分和se ...