csv文件:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)
1.读文件:
首先我们先 看一下数据:
我们创建了两个csv文件,一个是英文的,一个是带有中文的
1.1 针对英文的读文件
import csv
f=open('data.csv','r')
data=csv.reader(f)
print(data)
for i in data:
print(i)
1.2针对中文的读文件
import csv
f=open('dataCH.csv','r',encoding='utf-8')
data=csv.reader(f)
print(data)
for i in data:
print(i)
需要加上,encoding='utf-8',不然会有乱码
2. 写文件
2.1 针对英文文件
import csv
'''
针对英文文件:写入CSV文件
'''
data=[('wangwu','19'),('sunwukong','20'),('tangseng','21')]
f=open('data.csv','w')
writer=csv.writer(f)
for i in data:
writer.writerow(i)
f.close()
我们可以看到,每一次插入一条数据,就插入了一行空格,我们可以用加入参数newline=‘’ 解决这个问题,而且这种写入是将csv中以前的数据全部清除了。
import csv
'''
针对英文文件:写入CSV文件
'''
data=[('wangwu','19'),('sunwukong','20'),('tangseng','21')]
f=open('data.csv','w',newline='')
writer=csv.writer(f)
for i in data:
writer.writerow(i)
f.close()
2.2 针对中文文件
同样,我们也需要使用newline这个参数避免多一行空格的尴尬,另外,我们还需要加入编码格式的参数,不然会出现乱码情况。
import csv
'''
针对中文文件:写入CSV文件
'''
data=[('王五','19'),('孙悟空','20'),('唐僧','21')]
f=open('dataCH.csv','w',newline='',encoding='gbk')
writer=csv.writer(f)
for i in data:
writer.writerow(i)
f.close()
3. csv.DictReader()用法
首先看一下英文data的数据
import csv
'''
针对英文文件:读CSV文件
将CSV 数据读进列表中(首先查找是否使用给定字段名,如果没有,就是用第一行作为键)
'''
f=open('data.csv','r')
reader=csv.DictReader(f)
for i in reader:
print(i)
print(reader)
f.close()
4.csv.DictWriter()用法
import csv
'''
针对英文文件:写入CSV文件
直接字典字段写入到CSV文件中
'''
data={'name':'zhangsan','age':'22'}
with open('data.csv','w',newline='') as f:
fieldnames={'name','age'} # 表头
writer=csv.DictWriter(f,fieldnames=fieldnames)
writer.writeheader()
writer.writerow(data)
有的时候,我们也会得到这个结果,顺序会发生变化,这个是因为Python的 dict 不保持顺序。
5.写读追加状态
'r':读
'w':写
'a':追加
'r+' == r+w(可读可写,文件若不存在就报错(IOError))
'w+' == w+r(可读可写,文件若不存在就创建)
'a+' ==a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:
'rb' 'wb' 'ab' 'rb+' 'wb+' 'ab+'