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. C#高级编程之泛型三(协变与逆变)

    为何引入协变.逆变 我们知道一个子类对象可以赋值给一个基类对象 Animal animal = new Animal(); Animal cat = new Cat(); 那如果是用在泛型里面能行嘛? ...

  2. Android 滑动删除控件推荐

    implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0' <?xml version="1.0" enc ...

  3. Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现

    Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现 环境搭建 docker pull medicean/vulapps:s_shiro_1 docker run -d ...

  4. beef+metasploit

    beef调用metasploit模块,直接xss吊打 先进入beef的文件夹 对config.yaml进行修改 将metasploit的false改为true 进入这个文件夹 修改配置文件 检查met ...

  5. MindManager使用教程:如何导出HTML5交互式导图

    Mindmanager思维导图软件有着友好的用户界面以及丰富的思维导图制作功能.再搭配与Microsoft 软件的无缝集成功能,使得这款思维导图软件越来越受到职场人士的喜爱. 不仅是作为制作思维导图的 ...

  6. 手把手教你用思维导图软件iMindMap制作计划表

    在日常生活中小编也经常使用思维导图软件iMindMap来创建思维导图以规划工作及学习的安排.尤其是时间安排类型的思维导图,能极大程度的节约我们的时间,接下来就由小编以自己假期的社会实践向大家分享一下怎 ...

  7. 「CEOI2013」Board

    description 洛谷P5513 solution 用一个二进制数维护这个节点所处的位置,那么"1"操作就是这个数\(*2\),"2"操作就是这个数\(* ...

  8. 接上一篇:(三) Spring环境搭建

    3.1.获取 Spring framework jar 包 (一) spring官网下载 (二)spring的核心包 (三) 配置 XML 1. 新建立一个 xml.名字任意,如 applicatio ...

  9. Free-Form Image Inpainting with Gated Convolution

    Free-Form Image Inpainting with Gated Convolution pytorch 引言 和Generative Image Inpainting with Conte ...

  10. MySQL数据库入门学习

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