Python的csv文件(csv模块)和ini文件(configparser模块)处理
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模块)处理的更多相关文章
- python中configparser模块读取ini文件
python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...
- 向php文件中添加php.ini文件
向php文件中添加php.ini文件 默认情况下,php是没有php.ini配置文件的,必须手工添加php.ini文件 在php安装目录中,复制php.ini文件到/usr/local/php/lib ...
- C#中选中指定文件并读取类似ini文件的内容
一.背景 由于项目中需要去读取设备的配置信息,配置文件的内容和INI配置文件的格式类似,所以可以按照INI文件的方式来处理.涉及如何打开一个文件,获取打开的文件的路径问题,并读取选中的文件里边的内容. ...
- C# 使用文件流来读写ini文件
背景 之前采用ini文件作为程序的配置文件,觉得这种结构简单明了,配置起来也挺方便.然后操作方式是通过WindowsAPI,然后再网上找到一个基于WindowsAPI封装的help类,用起来倒也顺手. ...
- python基础——15(加密、excel操作、ini文件操作、xml操作模块及数据格式分类)
一.加密模块 1.有解密的加密方式(base64) #base64加密 import base64 str_encrypt = input("输入要加密的字符串:\n") base ...
- Python中.ini文件使用
.ini文件 一般用来配置常量或者数据库链接语句等,是纯文本格式,所以可以用纯文本编辑器来编辑其内容. ;文件格式如下 ;注释用分号开头,setion 节 [setion] key = value s ...
- Python基础之读取ini文件
基本使用方法 第一步:准备一份INI文件.如test1.ini [ITEMS] item1=1 item2=2 item3=3 item4=4 [ITEM1] test1=aaa [ITEM2] te ...
- python操作ini文件
简介 ini文件作为常见的配置文件,因此需要对ini文件做处理,此处使用configparser模块,本文介绍以下ini文件常用的处理方式. 需要读取的ini文件 如下文件,[ ]包含的称为secti ...
- python:实例化configparser模块读写配置文件
之前的博客介绍过利用python的configparser模块读写配置文件的基础用法,这篇博客,介绍下如何实例化,方便作为公共类调用. 实例化的好处有很多,既方便调用,又降低了脚本的维护成本,而且提高 ...
- python:利用configparser模块读写配置文件
在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可. 这篇博客,介绍下python中利用configpars ...
随机推荐
- 使用Javascript从Google Places搜索api获取纬度和经度
如何使用谷歌地图搜索框api从搜索到的位置获取经度和纬度. 我使用与谷歌演示相同的代码 – https://developers.google.com/maps/documentation/javas ...
- 【计算机视觉】黄金标准算法Gold Standard algorithm
前言 最近有关于3DMM的内容,博主也只是看了个大概,并没有深入了解算法的实现原理和过程.昨天实习生问关于黄金标准算法的推导,博主也就参考一些资料熟悉了这个算法的实现过程.不太了解使用这个算法的前因后 ...
- POWER 740硬盘更换步骤
把mirror解掉,再从rootvg里面提出来,再用diag确认下,再用命令删掉hdisk1,更换 更换前的准备 1.查看报错日志. 执行errpt列出报错条目 IDENTIFIER TIMESTAM ...
- scrollview的优化
针对一次加载很多格子的scrollview的优化,第一次只加载可视区域的格子,其他的用空物体占位,在每次滑动时检测需要实例化的格子,通过对象池重用第一次的格子.可以根据每行格子的数量只检测每行的第一个 ...
- QQ联合登录(基于Oauth2.0协议)
1. 获取授权码Authorization Code https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id= ...
- 图解分布式一致性协议Paxos
Paxos协议/算法是分布式系统中比较重要的协议,它有多重要呢? <分布式系统的事务处理>: Google Chubby的作者Mike Burrows说过这个世界上只有一种一致性算法,那就 ...
- SQL Server 数据库启动过程(用户数据库加载过程的疑难杂症)
前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程, ...
- Word页眉实现首页不同、奇偶页不同 、更改页眉横线、页眉文字对齐 -- 视频教程(8)
1. 目标 目标1:实现页眉"首页不同,奇偶页不同" 目标2:更改页眉横线 目标3:页眉文字有三部分:第一部分左对齐,第二部分居中,第三部分右对齐 2. 教程 未完 ...... ...
- Kaldi安装
Kaldi是基于C++开发并遵守Apache License v2.0的一款语音识别工具包,是目前最流行的ASR工具之一,本文基于Ubuntu 18.04 LTS介绍了如何安装Kaldi. 首先按照官 ...
- composer安装FOSUserBundle内存溢出
内存溢出异常: Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes ...