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. Spring源码理论

    Spring Bean的创建过程: Spring容器获取Bean和创建Bean都会调用getBean()方法. getBean()方法 1)getBean()方法内部最终调用doGetBean()方法 ...

  2. 算法:线性时间选择(C/C++)

    Description 给定线性序集中n个元素和一个整数k,n<=2000000,1<=k<=n,要求找出这n个元素中第k小的数. Input 第一行有两个正整数n,k. 接下来是n ...

  3. html图片拖放

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  4. __METHOD__

  5. Hadoop大数据平台搭建之前期配置(2)

    环境:CentOS 7.4 (1708  DVD) 工具:VMware.MobaXterm 一. 克隆大数据集群 1. 选中已经进行了基本配置的虚拟机,进行克隆. 2. 此处改为"创建完整克 ...

  6. 仅一年工作经验成功跳槽字节跳动,腾讯并拿到字节的offer,全靠这份面经!

    前言 前几天由于工作的原因一直没怎么看私信,昨天在整理私信的时候看到了一个粉丝给我疯狂私信想要我帮忙整理一份大厂面经,说自己工作也有几年了想跳槽冲刺一下,但是不知道该怎么做好前期准备.我看到这个粉丝也 ...

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

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

  8. 模拟赛38 B. T形覆盖 大模拟

    题目描述 如果玩过俄罗斯方块,应该见过如下图形: 我们称它为一个 \(T\) 形四格拼板 .其中心被标记为\(×\). 小苗画了一个 \(m\) 行 \(n\) 列的长方形网格.行从 \(0\) 至 ...

  9. JVM(二)-内存区域之线程私有区

    概述: 对于从事C.C++开发的程序员来说,在内存管理领域,他们既是拥有最高权力的"皇帝",又是从事最基础工作的劳动人民--既拥有每个对象的"所有权", 又担负 ...

  10. libev使用方法

    1. libev简介 libev是个高性能跨平台的事件驱动框架,支持io事件,超时事件,子进程状态改变通知,信号通知,文件状态改变通知,还能用来实现wait/notify机制.libev对每种监听事件 ...