学习python,到码农博客。

Python对CSV文件的读取与写入

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

 

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

 

 

 

一、导入CSV包

import csv

 

二、CSV文件基本读取

def read_csv():
    with open('file.csv','r') as f:
        rete = csv.reader(f)        # 读取后返回的是一个_csv.reader的对象,如果通过遍历,可以看到是一个个列表
        for x in rete:
            print(x)

运行结果:

['编号', '课程', '讲师']
['1', 'Python', 'Tom']
['2', 'C#', 'Jesee']
['3', 'Django', 'Nike']
['4', '.Net', 'Kangkang']

 

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

 

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

def read_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 in red:
            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文件并以字典的形式映射

def read_dict():
    '''读取csv并以字典的形式映射'''
    with open('score.csv','r') as f:
        red = csv.DictReader(f)     # 通过csv自带的DictReader方法将数据转换成字典表
        for x in red:
            print(x)              # 遍历出来每个x都是一个字典表

运行结果:

{'编号': '1', '课程': 'Python', '讲师': 'Tom'}
{'编号': '2', '课程': 'C#', '讲师': 'Jesee'}
{'编号': '3', '课程': 'Django', '讲师': 'Nike'}
{'编号': '4', '课程': '.Net', '讲师': 'Kangkang'}

 

 

五、写入CSV文件

写入单行内容到CSV文件

def write_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文件

def write_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文件

def write_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
posted @ 2020-12-15 09:49  码农blog  阅读(12991)  评论(1编辑  收藏  举报

学习python,到码农博客。

/* 看板娘 */ /* 粒子吸附*/