77. Python writerows 写入多行
包含在主题中
#语法简介
1、目标任务
2. 准备工作
3.writerow单行写入
4. 写入多行writerows
5. a 以追加模式写入值
六、总结
1. 为目标任务新建一个【班级成就】文件夹。
在此文件夹下创建一个新文件[Class 1 Transcript.csv]。
在此文件中写入以下内容:
年级名称
刘一100
陈二90
张三80
约翰·多伊70
王五60
2.准备工作在计算机的D盘中创建一个新文件夹“77”。
[77] 在VScode 编辑器中打开该文件夹。
在[77]文件夹中创建一个新的77.py文件。
我们将代码写入77.py 文件中。
3. writerow 写入一行[要写入的内容]
年级名称
刘一100
陈二90
张三80
约翰·多伊70
王五60
结果的第一行是名称。
接下来的五行是我们要写的内容。
写入的值有5行,必须使用5个字典来存储写入的值。
[试用码]
#导入用于创建文件目录的os模块
进口商品
#导入csv 模块以处理CSV 文件
导入csv
#mkdir 用于创建目录
#相对路径
os.mkdir(‘每门课的分数’)
#使用字典存储要写入CSV文件的信息
dict1={‘姓名’:’刘毅’,’成绩’:’100′}
dict2={‘姓名’:’陈二’,’成绩’:’90’}
dict3={‘姓名’:’张三’,’成绩’:’80’}
dict4={‘姓名’:’李四’,’分数’:’70’}
dict5={‘姓名’:’万古’,’分数’:’60’}
#设置文件头,即列名
header=[‘姓名’,’成就’]
#文件的相对路径
file_path=r’每节课成绩\Class 1 Transcript.csv’
#自动关闭文件并创建文件对象
withopen(file_path,’w’,encoding=’utf-8′,newline=”)asf:
#实例化DictWriter类并获取DictWriter对象
dw=csv.DictWriter(f,fieldnames=标题)
#写入文件头
dw.writeheader()
#writerow 一次写入一行
dw.writerow(dict1)
dw.writerow(dict2)
dw.writerow(dict3)
dw.writerow(dict4)
dw.writerow(dict5)
[检查对象语法]
在这里我们将复习一些不是每个人都熟悉的语法点。
你回顾得越多,它就越深刻地印在你的脑海里。
#自动关闭文件并创建文件对象
withopen(file_path,’w’,encoding=’utf-8′,newline=”)asf:
f 是由with open 语句创建的文件对象。
#实例化DictWriter类并获取DictWriter对象
dw=csv.DictWriter(f,fieldnames=标题)
实例化列和创建对象的语法:
对象名=类名()
dw 是实例化该类后创建的csv.DictWriter 对象。
dw 是对象名称。
csv 是模块名称。
DictWriter是一个类名,其作用是以字典格式写入。
#writerow 一次写入一行
dw.writerow(dict1)
调用类方法的语法:
对象名.方法名(值,)
dw 是对象名称。
writerow 是方法名,其作用是一次写入一行。
dict1 是要写入的值。
运行以上代码后,以上5行值成功写入CSV文件。
77-1 CSV 文件上的代码写入五行值并调用writerrow 方法五次。
#writerow 一次写入一行
dw.writerow(dict1)
dw.writerow(dict2)
dw.writerow(dict3)
dw.writerow(dict4)
dw.writerow(dict5)
这种写法过于复杂,不符合Python代码的简洁性。
您可以将上面的5 行代码替换为1 行代码。
#writerows多行写作
dw.birows([dict1,dict2,dict3,dict4,dict5])
4. writerows 将多行写入writerow: CSV 模块并写入单行数据。
writerows:在CSV 模块中写入多行数据。
[试用码]
#导入csv 模块以处理CSV 文件
导入csv
#使用字典存储要写入CSV文件的信息
dict1={‘姓名’:’刘毅’,’成绩’:’100′}
dict2={‘姓名’:’陈二’,’成绩’:’90’}
dict3={‘姓名’:’张三’,’成绩’:’80’}
dict4={‘姓名’:’李四’,’分数’:’70’}
dict5={‘姓名’:’万古’,’分数’:’60’}
#设置文件头,即列名
header=[‘姓名’,’成就’]
#文件的相对路径
file_path=r’每节课成绩\Class 1 Transcript.csv’
#自动关闭文件并创建文件对象
withopen(file_path,’w’,encoding=’utf-8′,newline=”)asf:
#实例化DictWriter类并获取DictWriter对象
dw=csv.DictWriter(f,fieldnames=标题)
#写入文件头
dw.writeheader()
#writerows多行写作
dw.birows([dict1,dict2,dict3,dict4,dict5])
【友情提示】
删除了上面代码中与操作系统相关的语句(删除了以下代码)。
#导入用于创建文件目录的os模块
进口商品
#mkdir 用于创建目录
#相对路径
os.mkdir(‘每门课的分数’)
[Results for every class] 文件夹已存在,因此创建此目录将导致错误。
【易错分析】
请注意,writerows 参数是列表类型。
#writerows多行写作
dw.birows([dict1,dict2,dict3,dict4,dict5])
很多同学写的时候都是这样的:
#writerows多行写作
dw.birows(dict1,dict2,dict3,dict4,dict5)
没有列表类型,数据会报错。
5. 以附加模式写入值77-2 以创建文件。
上面的代码中,with open语句的写入模式,即模式参数都是w。
w表示无论文件之前包含什么内容,只要选择w模式写入,之前的内容都会被覆盖。
a 是追加模式。追加模式保留原始内容。
接下来,将模式参数更改为a。
#自动关闭文件并创建文件对象
withopen(file_path,’a’,encoding=’utf-8′,newline=”)asf:
[试用码]
#导入csv 模块以处理CSV 文件
导入csv
#使用字典存储要写入CSV文件的信息
dict1={‘姓名’:’刘毅’,’成绩’:’100′}
dict2={‘姓名’:’陈二’,’成绩’:’90’}
dict3={‘姓名’:’张三’,’成绩’:’80’}
dict4={‘姓名’:’李四’,’分数’:’70’}
dict5={‘姓名’:’万古’,’分数’:’60’}
#设置文件头,即列名
header=[‘姓名’,’成就’]
#文件的相对路径
file_path=r’每节课成绩\Class 1 Transcript.csv’
#自动关闭文件并创建文件对象
withopen(file_path,’a’,encoding=’utf-8′,newline=”)asf:
#实例化DictWriter类并获取DictWriter对象
dw=csv.DictWriter(f,fieldnames=标题)
#写入文件头
dw.writeheader()
#writerows多行写作
dw.birows([dict1,dict2,dict3,dict4,dict5])
当我运行代码时,我得到以下结果:
观察输出并记下绿色框中的内容。
我这里有一个不需要的额外标头,我该怎么办?
writeheade 表示写入表头。
如果删除这行代码,标题就会消失。
#写入文件头
dw.writeheader()
[试用码]
#导入csv 模块以处理CSV 文件
导入csv
#使用字典存储要写入CSV文件的信息
dict1={‘姓名’:’刘毅’,’成绩’:’100′}
dict2={‘姓名’:’陈二’,’成绩’:’90’}
dict3={‘姓名’:’张三’,’成绩’:’80’}
dict4={‘姓名’:’李四’,’分数’:’70’}
dict5={‘姓名’:’万古’,’分数’:’60’}
#设置文件头,即列名
header=[‘姓名’,’成就’]
#文件的相对路径
file_path=r’每节课成绩\Class 1 Transcript.csv’
#自动关闭文件并创建文件对象
withopen(file_path,’a’,encoding=’utf-8′,newline=”)asf:
#实例化DictWriter类并获取DictWriter对象
dw=csv.DictWriter(f,fieldnames=标题)
#如果不需要标头,则不需要这行代码。
#dw.writeheader()
#writerows多行写作
dw.birows([dict1,dict2,dict3,dict4,dict5])
77-46.总结[写在标题中]
dw.writeheader()
[writerow 一次写一行]
dw.writerow(dict1)
[多线眉毛]
dw.birows([dict1,dict2,dict3,dict4,dict5])
在w模式下写入会覆盖之前的内容。
以保留原始内容的模式进行编写。
【综合代码】
#导入用于创建文件目录的os模块
进口商品
#导入csv 模块以处理CSV 文件
导入csv
#mkdir 用于创建目录
#相对路径
os.mkdir(‘每门课得分2’)
#使用字典存储要写入CSV文件的信息
dict1={‘姓名’:’刘毅’,’成绩’:’100′}
dict2={‘姓名’:’陈二’,’成绩’:’90’}
dict3={‘姓名’:’张三’,’成绩’:’80’}
dict4={‘姓名’:’李四’,’分数’:’70’}
dict5={‘姓名’:’万古’,’分数’:’60’}
#设置文件头,即列名
header=[‘姓名’,’成就’]
#文件的相对路径
file_path=r’每班2\1班成绩单.csv’
#自动关闭文件并创建文件对象
withopen(file_path,’a’,encoding=’utf-8′,newline=”)asf:
#实例化DictWriter类并获取DictWriter对象
dw=csv.DictWriter(f,fieldnames=标题)
#写入文件头
dw.writeheader()
#writerow 一次写入一行
dw.writerow(dict1)
#writerows多行写作
dw.birows([dict2,dict3,dict4,dict5])