77. writerows写入多行

news2025/1/23 9:16:08

文章目录

    • 1. 目标任务
    • 2. 准备工作
    • 3. writerow单行写入
    • 4. writerows多行写入
    • 5. a以追加的模式写入值
    • 6. 总结

1. 目标任务

  1. 新建【各班级成绩】文件夹;

  2. 在该文件夹下新建一个【1班成绩单.csv】文件;

  3. 在该文件中写入下面的内容:

成绩 姓名
刘一 100
陈二 90
张三 80
李四 70
王五 60

2. 准备工作

  1. 在电脑D盘新建一个【77】文件夹。

  2. 用VScode编辑器打开【77】文件夹。

  3. 在【77】文件夹中新建一个77.py文件。

  4. 打家在77.py文件中编写代码。

3. writerow单行写入

【要写入的内容】

成绩 姓名
刘一 100
陈二 90
张三 80
李四 70
王五 60

第一行成绩 姓名是表头。

后面的5行是要写入的内容。

要写入的值有5行,我们需要用5个字典存储要写入的值。

【体验代码】

# 导入os 模块,用于创建文件目录
import os
# 导入 csv 模块,用于操作CSV文件
import csv

# mkdir作用是创建目录
# 相对路径
os.mkdir("各班级成绩")


# 用字典存储要写入CSV文件的信息
dict1 = {'姓名': '刘一', '成绩': '100'}
dict2 = {'姓名': '陈二', '成绩': '90'}
dict3 = {'姓名': '张三', '成绩': '80'}
dict4 = {'姓名': '李四', '成绩': '70'}
dict5 = {'姓名': '王五', '成绩': '60'}

# 设置文件的表头,即列名
header = ['姓名', '成绩']

# 文件的相对路径
file_path = r'各班级成绩\1班成绩单.csv'


# 以自动关闭文件的方式创建文件对象
with open(file_path, 'w', encoding='utf-8', newline="") as f:
    
    # 实例化类 DictWriter(),得到 DictWriter 对象
    dw = csv.DictWriter(f, fieldnames=header)

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

    # writerow每次写入一行
    dw.writerow(dict1)
    dw.writerow(dict2)
    dw.writerow(dict3)
    dw.writerow(dict4)
    dw.writerow(dict5)

【对象语法回顾】

这里对几个大家比较陌生的语法点进行回顾。

回顾的次数多了,它就是你脑子里的东西了。

# 以自动关闭文件的方式创建文件对象
with open(file_path, 'w', encoding='utf-8', newline="") as f:

f是是with open 语句创建的文件对象。

# 实例化类 DictWriter(),得到 DictWriter 对象
dw = csv.DictWriter(f, fieldnames=header)

实例化列,创建对象语法:

对象名=类名()

dw是实例化类后创建的csv.DictWriter对象。

dw是对象名。

csv是模块名。

DictWriter是类名,作用是用字典的形式写入。

# writerow每次写入一行
dw.writerow(dict1)

调用类的方法语法:

对象名.方法名(值,…)

dw是对象名。

writerow是方法名,作用是每次写入一行。

dict1是要写入的值。

运行上面的代码,我们成功向CSV文件写入了上述5行值。

在这里插入图片描述

上面的代码我们写入5行值,调用了5次writerow方法。

# writerow每次写入一行
dw.writerow(dict1)
dw.writerow(dict2)
dw.writerow(dict3)
dw.writerow(dict4)
dw.writerow(dict5)

这样的写法太复杂了,不符合Python代码简洁的特性。

上述5行代码我们可以用一行代码进行替换。

# writerows多行写入
dw.writerows([dict1,dict2,dict3,dict4,dict5])

4. writerows多行写入

writerow:CSV模块中,写入一行数据。

writerows:CSV模块中,写入多行数据。

【体验代码】

# 导入 csv 模块,用于操作CSV文件
import csv

# 用字典存储要写入CSV文件的信息
dict1 = {'姓名': '刘一', '成绩': '100'}
dict2 = {'姓名': '陈二', '成绩': '90'}
dict3 = {'姓名': '张三', '成绩': '80'}
dict4 = {'姓名': '李四', '成绩': '70'}
dict5 = {'姓名': '王五', '成绩': '60'}

# 设置文件的表头,即列名
header = ['姓名', '成绩']

# 文件的相对路径
file_path = r'各班级成绩\1班成绩单.csv'


# 以自动关闭文件的方式创建文件对象
with open(file_path, 'w', encoding='utf-8', newline="") as f:
    
    # 实例化类 DictWriter(),得到 DictWriter 对象
    dw = csv.DictWriter(f, fieldnames=header)

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

    # writerows多行写入
    dw.writerows([dict1, dict2, dict3, dict4, dict5])

【温馨提示】

上面这段代码我删除了os相关的语句(下面的代码被删除):

# 导入os 模块,用于创建文件目录
import os

# mkdir作用是创建目录
# 相对路径
os.mkdir("各班级成绩")

因为【各班级成绩】文件夹已经存在,如果我们在创建该目录,程序会报错。

【易错解析】

大家注意writerows的参数是一个列表类型:

# writerows多行写入
dw.writerows([dict1, dict2, dict3, dict4, dict5])

很多同学会写成下面这样的形式:

# writerows多行写入
dw.writerows(dict1, dict2, dict3, dict4, dict5)

没有列表类型,数据是会报错的。

5. a以追加的模式写入值

在这里插入图片描述

上面的代码with open语句的写入模式即mode参数都是w。

w就是不管我们的文件之前有什么内容,只要选用了w模式写入,之前的内容都会被覆盖。

a是追加模式,追加模式就是保留原有的内容。

下面我们将mode参数修改为a

# 以自动关闭文件的方式创建文件对象
with open(file_path, 'a', encoding='utf-8', newline="") as f:

【体验代码】

# 导入 csv 模块,用于操作CSV文件
import csv

# 用字典存储要写入CSV文件的信息
dict1 = {'姓名': '刘一', '成绩': '100'}
dict2 = {'姓名': '陈二', '成绩': '90'}
dict3 = {'姓名': '张三', '成绩': '80'}
dict4 = {'姓名': '李四', '成绩': '70'}
dict5 = {'姓名': '王五', '成绩': '60'}

# 设置文件的表头,即列名
header = ['姓名', '成绩']

# 文件的相对路径
file_path = r'各班级成绩\1班成绩单.csv'


# 以自动关闭文件的方式创建文件对象
with open(file_path, 'a', encoding='utf-8', newline="") as f:
    
    # 实例化类 DictWriter(),得到 DictWriter 对象
    dw = csv.DictWriter(f, fieldnames=header)

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

    # writerows多行写入
    dw.writerows([dict1, dict2, dict3, dict4, dict5])

运行代码,得到的结果如下:

在这里插入图片描述

观察输出结果,注意绿色框的内容。

这里多了一个表头是我们不需要的,那怎么办呢?

writeheade是写入表头的意思。

删除这行代码就没有表头了。

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

【体验代码】

# 导入 csv 模块,用于操作CSV文件
import csv

# 用字典存储要写入CSV文件的信息
dict1 = {'姓名': '刘一', '成绩': '100'}
dict2 = {'姓名': '陈二', '成绩': '90'}
dict3 = {'姓名': '张三', '成绩': '80'}
dict4 = {'姓名': '李四', '成绩': '70'}
dict5 = {'姓名': '王五', '成绩': '60'}

# 设置文件的表头,即列名
header = ['姓名', '成绩']

# 文件的相对路径
file_path = r'各班级成绩\1班成绩单.csv'


# 以自动关闭文件的方式创建文件对象
with open(file_path, 'a', encoding='utf-8', newline="") as f:
    
    # 实例化类 DictWriter(),得到 DictWriter 对象
    dw = csv.DictWriter(f, fieldnames=header)

    # 不要表头就不需要这行代码
    #dw.writeheader()

    # writerows多行写入
    dw.writerows([dict1, dict2, dict3, dict4, dict5])

在这里插入图片描述

6. 总结

【写入表头】

dw.writeheader()

【writerow每次写入一行】

dw.writerow(dict1)

【writerows多行写入】

dw.writerows([dict1, dict2, dict3, dict4, dict5])
    

w模式写入,之前的内容被覆盖。

a模式写入,保留原有的内容。

【综合代码】

# 导入os 模块,用于创建文件目录
import os
# 导入 csv 模块,用于操作CSV文件
import csv

# mkdir作用是创建目录
# 相对路径
os.mkdir("各班级成绩2")


# 用字典存储要写入CSV文件的信息
dict1 = {'姓名': '刘一', '成绩': '100'}
dict2 = {'姓名': '陈二', '成绩': '90'}
dict3 = {'姓名': '张三', '成绩': '80'}
dict4 = {'姓名': '李四', '成绩': '70'}
dict5 = {'姓名': '王五', '成绩': '60'}

# 设置文件的表头,即列名
header = ['姓名', '成绩']

# 文件的相对路径
file_path = r'各班级成绩2\1班成绩单.csv'


# 以自动关闭文件的方式创建文件对象
with open(file_path, 'a', encoding='utf-8', newline="") as f:
    
    # 实例化类 DictWriter(),得到 DictWriter 对象
    dw = csv.DictWriter(f, fieldnames=header)

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

    # writerow每次写入一行
    dw.writerow(dict1)
    # writerows多行写入
    dw.writerows([dict2, dict3, dict4, dict5])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 8搭建EMQX集群

概览 EMQX (opens new window)是一款大规模可弹性伸缩的云原生分布式物联网 MQTT (opens new window)消息服务器。 EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由: 1. 稳定承载大规模的 MQTT 客…

Allegro如何添加菜单栏操作指导

Allegro如何添加菜单栏操作指导 用Allegro设计PCB的时候,将常用的命令放在菜单栏的话可以方便使用,省去设计时间,菜单如下图 Allegro支持自由添加或者删除菜单,具体操作如下 点击View点击Customize Toolbar

【使用vue init和vue create的区别以及搭建vue项目的教程】

vue init 是vue-cli2.x的初始化方式,可以使用github上面的一些模板来初始化项目 webpack是官方推荐的标准模板名 使用方式:vue init webpack 项目名称 例如使用github上面electron-vue的模板使用方式:vue init electron-vue 项目名称教程目…

Java的数据库编程:JDBC

Content 🎉1什么是API 🎉2.什么是JDBC 🎉3.数据库驱动包的安装 🎉4.数据库安装包在idea的使用 🎉5.JDBC的增删改查的简单实现 今天为大家带来JAVA的数据库编程,也就是用Java实现数据库 数据库的最基本的操作就是…

分布式锁简介

Redis因为单进程、性能高常被用于分布式锁;锁在程序中作用是同步工具,保证共享资源在同一时刻只能被一个线程访问。 Java中经常用的锁synchronized、Lock,但是Java的锁智能保证单机的时候有效,分布式集群环境就无能为力了&#xf…

软件设计师错题集

软件设计师错题集一、计算机组成与体系结构1.1 浮点数1.2 Flynn分类法1.3 指令流水线1.4 层次化存储体系1.4.1 程序的局限性1.5 Cache1.6 输入输出技术1.7 总线系统1.8 CRC循环冗余校验码二、数据结构与算法基础2.1 队列与栈2.2 树与二叉树的特殊性2.3 最优二叉树(哈…

VisualSP Enterprise - February crack

VisualSP Enterprise - February crack VisualSP(可视化支持平台)提供了一个上下文中完全可定制的培训平台,它可以作为企业web应用程序的覆盖层提供。无论员工正在使用什么应用程序,他们都能够快速访问页面培训和指导,说明如何最有效地使用该…

C++基础了解-14-C++ 字符串

C 字符串 一、C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 RUNOOB …

教你如何搭建店铺—收支管理系统,demo可分享

1、简介1.1、案例简介本文将介绍,如何搭建店铺-收支管理。1.2、应用场景以店铺收支管理为核心,维度数据分析,智能指导门店经营,账目清晰一目了然,店铺经营更高效。2、设置方法2.1、表单搭建1)新建表单【客户…

如何使用码匠连接 DynamoDB

目录 在码匠中集成 DynamoDB 在码匠中使用 DynamoDB 关于码匠 DynamoDB 是亚马逊 AWS 的一种高性能、全托管的 NoSQL 数据库服务。作为一种数据源,DynamoDB 能够提供高度可扩展性、低延迟和可靠性。它支持多种数据类型和数据模型,包括键-值、文档和图…

元宇宙时代来临,Facebook豪掷百亿是谋略还是赌博?

"Facebook向元宇宙发起冲击,豪掷百亿是谋略还是赌博?"2022年,Facebook宣布将投资100亿美元用于元宇宙技术的开发和推广。这笔巨额资金的投入是否会给Facebook带来巨大的回报,还是一场高风险的赌博呢?首先&am…

【13种css选择器】学css选择器,这一篇就够了

举例形象让你学会,不搞官方话css所有的选择器相邻兄弟选择器后续兄弟选择器后代选择器子代选择器并集选择器(多重选择器)属性选择器伪类选择器伪元素选择器class选择器(类选择器)id选择器*选择器(通配符选择器)标签选择…

【算法之旅】初识数据结构与算法

一名软件工程专业学生的算法之旅,记录自己从零开始学习数据结构与算法,从小白的视角学习数据结构:数组、对象/结构、字符串、队列、栈、树、图、堆、平衡树/线段树等,学习算法:枚举、排序、搜索、计数、分治策略、动态…

Windows中配置docker没有hyper-v功能解决方案

👨 作者简介:大家好,我是Taro,前端领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录前言解决步骤:1.新建文档2. 另存为3. 功能…

Tomcat独立部署-Nginx-1.12.2配置SSL

目录 🏆1. 实现思路 🏆2. 重启服务器 🏆3. proxy_pass 后地址带/和不带/的url地址显示 🏆4. 配置SSL证书 🏆5. 遇到问题 🏆6. 参考文章 学习完本篇博客您将掌握: 1、使用Tomcat配置SSL域名…

SpringMVC中的拦截器不生效的问题解决以及衍生出的WebMvcConfigurationSupport继承问题思考

文章目录SpringMVC中的拦截器不生效的问题解决WebMvcConfigurationSupport继承问题思考SpringMVC中的拦截器不生效的问题解决 过滤器代码(被Spring扫描并管理): Component public class StuInterceptor implements HandlerInterceptor {Overridepublic boolean pr…

Dynamics365安装失败解决及注册编写

一、修改错误昨天登录报错今天开始返回我之前设置的断点开始重新配置,Reporing Services配置完成后发现dynamics365还是下载失败之后下载了一上午dynamics365就一直卡在最后的界面进度条不动索性我直接把所有环境都卸载了 连同虚拟机卸载重装终于在下午的时候dynami…

设计模式---工厂模式

目录 1. 简单工厂模式 2. 工厂方法模式 1. 简单工厂模式 简单工厂模式(Simple Factory Patterm)又称为静态工厂方法模式(Static Factory Model),它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义了一…

【Nginx】Nginx的安装配置

环境说明系统:Centos 7一、编译安装Nginx官网下载地址nginx: download#安装依赖 [rootnginx nginx-1.22.1]# yum install gcc pcre pcre-devel zlib zlib-devel -y #从官网下载Nginx安装包,并进行解压、编译、安装 [rootnginx ~]# wget https://nginx.or…

【第八课】空间数据基础与处理——数据结构转化

一、前言 数据结构即指数据组织的形式,是适合于计算机存储、管理和处理的数据逻辑结构。对空间数据则是地理实体的空间排列方式和相互关系的抽象描述。它是对数据的一种理解和解释,不说明数据结构的数据是毫无用处的,不仅用户无法理解,计算机程序也不能正确地处理,对同样一组数…