Exercise 1
import csv # 设置员工发展基金确认表路径
source_path = './员工发展基金确认表.csv'
# 设置存放拆分结果文件的文件夹路径
result_path = './员工发展基金文件夹_demo/' # 打开员工发展基金确认表
with open(source_path, 'r', encoding='utf-8', newline='') as source_file:
# 将文件对象转换为DictReader对象
source_csv = csv.DictReader(source_file)
# 将csv对象的表头读取出来
headers = source_csv.fieldnames # 循环处理确认表中除表头外的每一行数据
for csv_row in source_csv:
# 根据获取的员工名字拼接新文件名
file_name = csv_row['姓名'] + '.csv'
# 拼接新文件路径
file_path = result_path + file_name # 创建新文件并添加数据
with open(file_path, 'w', encoding='utf-8', newline='') as target_file:
# 将文件对象转换为DictWriter对象
target_writer = csv.DictWriter(target_file, fieldnames=headers)
# 写入表头
target_writer.writeheader()
# 写入数据
target_writer.writerow(csv_row)
Exercise 2
功能块代码展示
首先来看第一个功能块——读取csv文件内容。 第3、4行,设置了【员工发展基金确认表.csv】的文件路径。
第8至13行,打开了【员工发展基金确认表.csv】文件,再读取该csv文件中的内容。 然后是第二个功能块——将内容写入新的csv文件。 第5、6行,设置存放拆分结果文件的文件夹路径。
第17至20行,使用字符串拼接,得到了要写入内容的新csv文件的路径。
第22至29行,创建并打开新csv文件,并将内容写入其中。
import csv # 设置员工发展基金确认表路径
source_path = './员工发展基金确认表.csv'
# 设置存放拆分结果文件的文件夹路径
result_path = './员工发展基金文件夹_demo/' # 打开员工发展基金确认表文件
with open(source_path, 'r', encoding='utf-8', newline='') as source_file:
# 将文件对象转换为DictReader对象
source_csv = csv.DictReader(source_file)
# 将csv文件的表头读取出来
headers = source_csv.fieldnames # 循环处理确认表中除表头外的每一行数据
for csv_row in source_csv:
# 根据获取的员工名字拼接新文件名
file_name = csv_row['姓名'] + '.csv'
# 拼接新文件路径
file_path = result_path + file_name # 创建新文件并添加数据
with open(file_path, 'w', encoding='utf-8', newline='') as target_file:
# 将文件对象转换为DictWriter对象
target_writer = csv.DictWriter(target_file, fieldnames=headers)
# 写入表头
target_writer.writeheader()
# 写入数据
target_writer.writerow(csv_row)
Exercise 3
读取csv文件内容功能块
# 导入csv模块
import csv
# 设置员工发展基金确认表路径
source_path = './员工发展基金确认表.csv'
# 打开员工发展基金确认表
with open(source_path, 'r', encoding='utf-8', newline='') as source_file:
# 将文件对象转换成DictReader对象
source_csv = csv.DictReader(source_file)
# 将csv文件的表头读取出来
headers = source_csv.fieldnames
# 循环打印除表头以外的所有数据
for csv_row in source_csv:
# 打印数据
print(csv_row)

现有列表:

member_list = [['邱大仁'], ['徐小刚', '陈知枫'], ['王晴', '廖雨']]

请你使用 for循环 和 writerow(row) 将列表内容分三行写入csv文件 'writerow_demo.csv' 中。

# 导入csv模块
import csv
member_list = [
    ['邱大仁'],
    ['徐小刚', '陈知枫'],
    ['王晴', '廖雨']
    ]
# 打开并创建'./writerow_demo.csv'文件,注意参数的设置,获取文件对象
with open('./writerow_demo.csv', 'w', encoding='utf-8', newline='') as demo_file:
    # 将文件对象转换为writer对象
    csv_demo = csv.writer(demo_file)
    # 循环遍历列表中的元素
    for member in member_list:
        # 将列表中的元素写入csv文件中
        csv_demo.writerow(member)
 
Exercise 4
内容写入新的csv文件功能块
现有字典:
info_dict = {'姓名': '徐小刚', '工号': '1005', '员工发展基金': '100', '员工签字': ''}
将其写入文件'徐小刚信息.csv'中。
提示:最好提前把字典中的键(key)取出来存入列表中,然后在实例化DictWriter时,将其传给参数fieldnames。
设置完参数还不够,要想写入表头,还得通过DictWriter对象调用方法writeheader()。
# 导入csv模块
import csv info_dict = {'姓名': '徐小刚', '工号': '1005', '员工发展基金': '100', '员工签字': ''} # 设置表头
headers = ['姓名', '工号', '员工发展基金', '员工签字']
# 创建并打开'./徐小刚信息.csv'
with open('./徐小刚信息.csv', 'w', encoding='utf-8', newline='') as target_file:
# 将文件对象转换为DictWriter对象
target_writer = csv.DictWriter(target_file, fieldnames=headers)
# 写入表头
target_writer.writeheader()
# 将字典写入csv文件
target_writer.writerow(info_dict)
Exercise 5
回顾一下代码所需的关键知识点。
① csv是Python的内置模块,使用前需要导入这个模块。
② 最好在一开始就设置好要打开的csv文件的路径和存放拆分结果的文件夹的路径,因为这样可以简化代码,让代码看起来更加清晰易读。
③ 读取csv文件的时候使用with open() as ...(注意设置新学的参数newline),然后使用DictReader将文件对象转换为DictReader对象,最后再通过DictReader对象的属性fieldnames获取表头。
④ 通过for循环来遍历DictReader中的每一个元素,从而获取csv文件中除表头外的每一行内容。
⑤ 使用字典的取值和字符串拼接得到完整的文件路径,然后再打开这个文件。使用DictWriter将文件对象转换为DictWriter对象,必须要将之前得到的表头传给参数fieldnames。
⑥ 将表头写入csv文件时,还需要使用方法writeheader(),写入对应的每一行内容可以使用方法writerow()。
重复上面的⑤和⑥,直至遍历完整个【员工发展基金确认表.csv】。
# 导入csv模块
import csv # 设置员工发展基金确认表的路径
source_path = './员工发展基金确认表.csv'
# 设置存放拆分结果文件的文件夹(员工发展基金文件夹)的路径。
result_path = './员工发展基金文件夹/' # 打开员工发展基金确认表
with open(source_path, 'r', encoding='utf-8', newline='') as source_file:
# 将文件对象转换为DictReader对象
source_csv = csv.DictReader(source_file)
# 将csv文件的表头读取出来
headers = source_csv.fieldnames # 循环处理确认表中除表头外的每一行数据
for csv_row in source_csv:
# 根据获取的员工名字拼接出新文件名
file_name = csv_row['姓名'] + '.csv'
# 拼接新文件路径
file_path = result_path + file_name # 创建新文件并添加数据
with open(file_path, 'w', encoding='utf-8', newline='') as target_file:
# 将文件对象转换为DictWriter对象
target_writer = csv.DictWriter(target_file, fieldnames=headers)
# 写入表头
target_writer.writeheader()
# 写入数据
target_writer.writerow(csv_row)

20201128-2 【自动化办公】读写csv文件的更多相关文章

  1. 用opencsv文件读写CSV文件

    首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解 ...

  2. 使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  3. python3读写csv文件

    python读取CSV文件   python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...

  4. python读写csv文件

    文章链接:https://www.cnblogs.com/cloud-ken/p/8432999.html Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗 ...

  5. 利用JavaCSV API来读写csv文件

    http://blog.csdn.net/loongshawn/article/details/53423121 http://javacsv.sourceforge.net/ 转载请注明来源-作者@ ...

  6. 使用 Apache Commons CSV 读写 CSV 文件

    有时候,我们需要读写 CSV 文件,在这里给大家分享Apache Commons CSV,读写 CSV 文件非常方便. 具体官方文档请访问Apache Commons CSV. 官方文档已经写得很详细 ...

  7. python3使用csv包,读写csv文件

    python操作csv,现在很多都用pandas包了,不过python还是有一个原始的包可以直接操作csv,或者excel的,下面举个例子说明csv读写csv文件的方法: import os impo ...

  8. C/C++读写csv文件

    博客转载自:http://blog.csdn.net/u012234115/article/details/64465398 C++ 读写CSV文件,注意一下格式即可 #include <ios ...

  9. JAVA读写CSV文件

    最近工作需要,需要读写CSV文件的数据,简单封装了一下 依赖读写CSV文件只需引用`javacsv`这个依赖就可以了 <dependency> <groupId>net.sou ...

  10. (Python基础教程之十二)Python读写CSV文件

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

随机推荐

  1. Python_列表相减(判断长度后长的减短的)

    #定义一个方法,可进行列表相减 class V(object): def __init__(self,*value): self.value=value def __sub__(self,other) ...

  2. mybatis 多数据源动态切换

    笔者主要从事c#开发,近期因为项目需要,搭建了一套spring-cloud微服务框架,集成了eureka服务注册中心. gateway网关过滤.admin服务监控.auth授权体系验证,集成了redi ...

  3. 讲武德,你们要的高性能日志工具 Log4j2,来了

    Log4j 介绍过了,SLF4J 介绍过了,Logback 也介绍过了,你以为日志系列的文章就到此终结了? 不不不,我告诉你,还有一个 Log4j 2,顾名思义,它就是 Log4j 的升级版,就好像手 ...

  4. [原题复现][CISCN 2019 初赛]WEB-Love Math(无参数RCE)[未完结]

    简介  原题复现:  考察知识点:无参数命令执行  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 源码审计 代码 1 ...

  5. web安全原理分析-SQL注入漏洞全解

    简介 靶场:榆林学院信息安全协会--入侵榆大实验靶场 数字型注入 1 字符型注入 1 布尔注入 1.布尔注入简介 mysql bool注入是盲注的一种.与报错注入不同,bool注入没有任何报错信息输出 ...

  6. 怎么给Folx添加需要储存的网站密码

    Folx内置密码管理功能,可以帮助用户储存特定网站的密码,实现更加快速的登陆下载操作.在Folx的免费版本中,用户最多可以存储2个密码:而Folx专业版则不限制用户存储密码的数量. Folx通过两种方 ...

  7. 如何用MathType 7输入x的一阶导数

    物理学.几何学.经济学等学科中的一些重要概念都可以用导数来表示.如,导数可以表示运动物体的瞬时速度和加速度.可以表示曲线在一点的斜率.还可以表示经济学中的边际和弹性.那么作为专业的公式编辑器,如何输入 ...

  8. 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!

    摘要:在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网 ...

  9. k8s集群部署rabbitmq集群

    1.构建rabbitmq镜像 RabbitMQ提供了一个Autocluster插件,可以自动创建RabbitMQ集群.下面我们将基于RabbitMQ的官方docker镜像,添加这个autocluste ...

  10. MySQL数据库入门学习

    一. 前言 作为一名大二在校生,因为正在学习网页设计,考虑到后台问题,所以便自学了数据库,可能给大家总结的不是很全,但是一些必要的点肯定会讲到.现在市场上有很多图形化的数据库, 二. MySQL基础知 ...