9.5 Python csv 文件的写入操作

9.5 Python csv 文件的写入操作

9.5.1 with open( ) as …

with open() as ... 是对原有 open() 和 close() 的优化。
使用with open() as ...语句时,代码块运行完毕后,程序会自动关闭文件,不用再写 close()语句来关闭文件。

用法是把open()函数放在 with 后面,把变量名放在as后面,结束时要加冒号,然后把要执行的代码缩进到with open() as ...下方的代码块中。

具体语法你可以参考下图:
在这里插入图片描述

在open close 方法中,我们将 open() 返回的文件对象以 变量f = open ( ) 的形式赋值给了变量f
with open( ) as... 中,我们没有使用 变量 = 的形式,而是直接将变量f放在了 as 后面。
with open(file_path, 'w', encoding='utf-8') as f: 用open函数以写入的方式打开文件,将返回的文件对对象赋值给变量f。

9.5.2 什么是csv 文件

csv 全称是 “Comma-Separated Values” 。
中文叫做【逗号分割的值】。
其文件以纯文本的形式存储表格数据。
它比Excel文件更加简洁。
XLS文本是电子表格,包含文本、数值和公式格式等内容,csv则不包含这些。

在这里插入图片描述

在这里插入图片描述

观察上图可以看到,文件中的数据是纯文本的形式,不同行的值(数据)之间,通过逗号,进行分隔。
备注:csv 文件也可以通过 Excel 打开,数据以电子表格的样式进行显示。
csv 文件也被视为一种简化版的电子表格。
在这里插入图片描述

9.5.3 用writer类写入

要对csv 文件进行读写操作,我们需要调用Python中的CSV模块中的类来进行操作。
csv 模块是 Python 标准库中的内置模块,作用是用于处理 csv 文件。
内置模块使用前需要用import 进行导入。

任务1:在根目录下新建一个文件夹,命名为【工作】

新建文件夹,需要用到os 模块。
使用os 模块前需要导入。
使用os 模块的mkdir 函数创建新的文件夹。

# 导入模块
import os
# 模块名.函数名 
os.mkdir('工作')

运行上述代码后,发现我们当前操作的文件夹中新增了一个名为【工作】的文件夹。

任务2:在【工作】文件夹中新建1个csv 文件,命名为【学生体检表.csv】

# 声明变量存储文件的路径
file = '工作/学生体检表.csv'
# 用open 函数的w 模式新建一个csv文件
f = open(file, 'w', encoding='utf-8')
# 关闭文件
f.close( )

运行上述代码后,我们发现【工作】文件夹中新增了一个【学生体检表.csv】文件。

任务3:将以下内容写入【学生体检表.csv】文件中

[‘name’,‘height’]
[‘Mike’,‘180’]
[‘Bob’,‘160’]
[‘andy’,‘170’]

# 导入模块
import csv
# 新建列表存储要写入的信息
list_1 = ['name','height']  
list_2 = ['Mike','180'] 
list_3 = ['Bob','160']  
list_4 = ['andy','170']  

# 设置文件路径
file_path = '工作/学生体检表.csv'

# 以自动关闭文件的方式写入
with open(file_path, 'w', encoding='utf-8') as f:
    # 调用模块的类:模块名.类名()
    csv_writer = csv.writer(f)
    # 调用类中的方法:对象.方法名()
    csv_writer.writerow(list_1)
    csv_writer.writerow(list_2)
    csv_writer.writerows([list_3,list_4])

【代码解析】

这里首先打开【学生体检表.csv】文件,然后指定打开的模式为w(即写入)。
然后调用csv 模块的writer()类来实现写入。
然后调用writer()类的writerow方法传入数据,这样就完成了写入。

write[raɪt]:写。
row[rəʊ]:一行。
writerow : 写入一行。
writerows :写入多行。

writerow方法每次仅可以写入一行。
但写入的函数较多时,可以使用writerows()方法,该方法可以实现一次写入多行。
writerows()方法中的参数可以使用列表嵌套的方式。
在这里插入图片描述

运行上述代码后,我们的【学生体检表.csv】有了新的内容,如下图所示:
在这里插入图片描述

9.5.4 用DictWriter类()写入

任务4:将以下内容写入【学生体检表.csv】文件中

dict1 = {‘name’: ‘张三’, ‘height’: ‘176’}
dict2 = {‘name’: ‘李四’, ‘height’: ‘177’}

# 导入 csv 模块
import csv

# 新建两个字典
dict1 = {'name': '张三', 'height': '176'}
dict2 = {'name': '李四', 'height': '177'}

# 新建列表设置文件的表头
head = ['name', 'height']

# 设置文件路径
file_path = '工作/学生体检表.csv'

# 以自动关闭的方式写入文件
with open(file_path, 'w', encoding='utf-8') as f:
    
    # 调用模块的类:模块名.类名()
    # 参数 f 为 csv 文件的对象; 
    # 参数 fieldnames 的作用是定义文件的表头
    dict_write = csv.DictWriter(f, fieldnames=head)

    # 写入文件的表头
    dict_write.writeheader()

    # writerows一次性写入多行
    dict_write.writerows([dict1,dict2])
   

【代码解析】

DictWriter() 是csv模块中的一个类。
作用是支持数据以字典的形式写入 csv 文件。

上述代码我们调用了csv 模块的 DictWriter()类来实现字典的写入。
DictWriter 理解为字典的写入:
注意这里有两个大写:一个是D一个是W
dictionary[ˈdɪkʃənri]:字典。
Writer [ˈraɪtə]:执笔者、撰稿人。
fieldnames :字段名称。
在这里插入图片描述

字典写入时,会将字典的键与文件中的表头进行匹配。
只有匹配成功,才会将键对应的值写到对应的表头下。
在这里插入图片描述

  • 18
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值