Python csv模块
Python csv模块主要用来处理csv文件,可以读取、写入、创建csv文件
何为csv文件呢?
百度百科:逗号分隔值(Comma-SeparatedValues,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
python中的csv模块的主要函数有下面两个:
csv.reader(csvfile, dialect='excel', **fmtparams)
注意:csvfile必须是文件对象,不能是文件名,不清楚的话,一会可以看下面的代码
返回值:一个reader对象,这个对象是可以迭代的,有个line_num参数,表示当前行数
参数表:
csvfile
需要是支持迭代(Iterator)的对象,并且每次调用next方法的返回值是字符串(string),
通常的文件(file)对象,或者列表(list)对象都是适用的
dialect
编码风格,默认为excel方式,也就是逗号(,)分隔,另外csv模块也支持excel-tab
风格,也就是制表符(tab)分隔。其它的方式需要自己定义,然后可以调用register_dialect
方法来注册,以及list_dialects方法来查询已注册的所有编码风格列表。
fmtparam
格式化参数,用来覆盖之前dialect对象指定的编码风格。
csv.writer(csvfile, dialect='excel', **fmtparams)
注意:csvfile必须是文件对象,不能是文件名,不清楚的话,一会可以看下面的代码
返回值:返回一个writer对象,这个对象有两个函数writerow()和writerows()
参数表:跟csv.reader()的参数表一样
下面看个例子吧,注释写的比较到位,相信你能看明白:
import csv # 读取一个 csv 文件 myfilepath = 'C:/Users/a/Desktop/mytablib.csvNew' # 这里用到的 open 都要加上 newline='' 否则会多一个换行符(标准库文档里说的) myfile = open(myfilepath, 'r', newline='') myreader = csv.reader(myfile) for row in myreader: if myreader.line_num == 1 : # line_num是从 1 开始计数的 continue for i in row : # row是一个列表 print(i, end=' ') print() myfile.close() # 记得 close 文件 # 写入一个已经存在的文件 myfile = open(myfilepath, 'a', newline='') # 使用append模式打开文件 mywriter = csv.writer(myfile) mywriter.writerow((3, 'wang', 25)) # 加入一行 mywriter.writerow((4, 'zhou', 38)) mywriter.writerows([[5, 'zhao', 16],[6, 'qian', 28]]) # 加入多行 myfile.close() #创建一个新的 csv 文件 mydata = [['index', 'name', 'age'], # mydata是一个二维列表 [1, 'dawa', 3], [2, 'erwa', 4], [3, 'sanwa', 5], [4, 'siwa', 6]] myfile = open('csvdata.dat', 'w', newline='') mywriter = csv.writer(myfile, delimiter=';') # 设定分隔符为分号 mywriter.writerows(mydata) myfile.close()