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. java url 编码

    public static void main(String[] args) throws UnsupportedEncodingException { String encodeUrl = URLE ...

  2. windows mysql手动添加my.ini 服务启动不了

    [mysqld] character-set-server=utf8 #绑定IPv4和3306端口 bind-address=0.0.0.0 port= default_storage_engine= ...

  3. [LOJ3053]希望

    对于一组$s_{1\cdots k}$,合法的$u$构成一个连通块,满足$\left\lvert V\right\rvert-\left\lvert E\right\rvert=1$ 考虑算出算$f_ ...

  4. obj.GetType().GetCustomAttributes

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. Apache Kafka® is a distributed streaming platform

    Kafka Connect简介 我们知道过去对于Kafka的定义是分布式,分区化的,带备份机制的日志提交服务.也就是一个分布式的消息队列,这也是他最常见的用法.但是Kafka不止于此,打开最新的官网. ...

  6. SpringBoot系列教程web篇之过滤器Filter使用指南

    web三大组件之一Filter,可以说是很多小伙伴学习java web时最早接触的知识点了,然而学得早不代表就用得多.基本上,如果不是让你从0到1写一个web应用(或者说即便从0到1写一个web应用) ...

  7. 【转帖】Infor转型十年启示录:ERP套件厂商为什么要做云平台?

    Infor转型十年启示录:ERP套件厂商为什么要做云平台? https://www.tmtpost.com/4199274.html 好像浪潮国际 就是用的infor的ERP软件. 秦聪慧• 2019 ...

  8. 在Vcl和FireMonkey应用程序中启用TXMLDocument 的XPath(selectNode,selectNodes)方法

    该TXMLDocument的类让你来操作VCL和FireMonkey应用程序的XML文件,但这个类没有实现直接的方式来调用XPath的相关方法(selectNode,的selectNodes),所以你 ...

  9. Go grpc 与 protobuf

    现在很多微服务内部的通信协议都采用rpc,性能高,安全.而grpc则是google退出的rpc plus. protobuf是传输协议,性能高,强大. 来一个server client的通信demo, ...

  10. java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens

    请求的协议不对  解决方案: 把请求的https改成http