python读取写入csv文件_Python对CSV文件的读取与写入

CSV 文件(Comma Separated Values file,即逗号分隔值文件)是一种纯文本文件,它使用特定的结构来排列表格数据。因为是纯文本文件,所以 csv 只包含实际的文本数据 —— 换句话说,csv 可以包含可打印的 ASCII 或 Unicode 字符。那在python中对CSV文件要怎么进行操作呢?

首先要先准备一个CSV文件,创建一个excel文件,并另存为csv文件,放入几行数据,我准备里面的内容是:

一、导入CSV包

import csv

二、CSV文件基本读取

defread_csv():

with open('file.csv','r') as f:

rete= csv.reader(f) #读取后返回的是一个_csv.reader的对象,如果通过遍历,可以看到是一个个列表

for x inrete:print(x)

运行结果:

['编号', '课程', '讲师']

['1', 'Python', 'Tom']

['2', 'C#', 'Jesee']

['3', 'Django', 'Nike']

['4', '.Net', 'Kangkang']

通过以上方法,就读取出CSV文件里面的内容。

三、读取CSV文件并用namedtuple映射列名

defread_namedtuple():

with open('file.csv','r') as f:

red= csv.reader(f) #读取后返回的是一个_csv.reader的对象,如果通过遍历,可以看到是一个列表

head = next(red) #要把第一行给分隔开,不然会当成数据一起打印了

ow = namedtuple('Row',head)#用nmaedtuple来定义的,它的对象名称就叫Row,后面列表给它的数据就是最终这个对象的值,而head里面的表头就当作是Row对象值的名称

for x inred:

row= ow(*x) #*r就是对遍历到的r进行解包,然后传递给Row,它会将每一列对应到Row对象值的名称下面

print(row)

运行结果:

Row(编号='1', 课程='Python', 讲师='Tom')

Row(编号='2', 课程='C#', 讲师='Jesee')

Row(编号='3', 课程='Django', 讲师='Nike')

Row(编号='4', 课程='.Net', 讲师='Kangkang')

四、读取CSV文件并以字典的形式映射

defread_dict():'''读取csv并以字典的形式映射'''with open('score.csv','r') as f:

red= csv.DictReader(f) #通过csv自带的DictReader方法将数据转换成字典表

for x inred:print(x) #遍历出来每个x都是一个字典表

运行结果:

{'编号': '1', '课程': 'Python', '讲师': 'Tom'}

{'编号': '2', '课程': 'C#', '讲师': 'Jesee'}

{'编号': '3', '课程': 'Django', '讲师': 'Nike'}

{'编号': '4', '课程': '.Net', '讲师': 'Kangkang'}

五、写入CSV文件

写入单行内容到CSV文件

defwrite_csv(s,q):

with open('file.csv','a',newline='') as f: #newline=空是因为我们文件是csv类型,如果不加这个东西,当我们写入东西的时候,就会出现空行

xieru = csv.writer(f,dialect='excel') #定义一个变量进行写入,将刚才的文件变量传进来,dialect就是定义一下文件的类型,我们定义为excel类型

xieru.writerow(s) #写入的方法是writerow,通过写入模式对象,调用方法进行写入

xieru.writerow(q)print('写入完成')

s= [5, 'Java', 'Mark']

q= [6, 'C++', 'William']

write_csv(s,q)

运行结果:

写入完成

写入多行内容到CSV文件

defwrite_csv(s):

with open('file.csv','a',newline='') as f:

xieru= csv.writer(f,dialect='excel')

xieru.writerows(s)#writerows方法是一下子写入多行内容

print('写入完成')

e= [(7,'PHP','Jones'),(8,'HTTP','Brown')]

write_csv(e)

运行结果:

写入完成

六、以字典表的形式写入CSV文件

defwrite_dict(q):

biao= ['编号','课程','讲师']

with open('file.csv', 'a', newline='') as f:

xieru=csv.DictWriter(f,biao)

xieru.writerows(q)#writerows方法是一下子写入多行内容

print('写入完成')

u=[

{'编号': 9, '课程': 'SQL', '讲师': 'Miller'},

{'编号': 10, '课程': 'MySQL', '讲师': 'Davis'}

]

write_dict(u)

运行结果:

写入完成

这就Python对CSV文件的读取与写入,你看懂了吗?如果没看懂,欢迎留言交流哦!

本文转自:https://www.myblou.com/archives/1466

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值