20201128-2 【自动化办公】读写csv文件
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' 中。
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文件的更多相关文章
- 用opencsv文件读写CSV文件
首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解 ...
- 使用Python读写csv文件的三种方法
Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...
- python3读写csv文件
python读取CSV文件 python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...
- python读写csv文件
文章链接:https://www.cnblogs.com/cloud-ken/p/8432999.html Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗 ...
- 利用JavaCSV API来读写csv文件
http://blog.csdn.net/loongshawn/article/details/53423121 http://javacsv.sourceforge.net/ 转载请注明来源-作者@ ...
- 使用 Apache Commons CSV 读写 CSV 文件
有时候,我们需要读写 CSV 文件,在这里给大家分享Apache Commons CSV,读写 CSV 文件非常方便. 具体官方文档请访问Apache Commons CSV. 官方文档已经写得很详细 ...
- python3使用csv包,读写csv文件
python操作csv,现在很多都用pandas包了,不过python还是有一个原始的包可以直接操作csv,或者excel的,下面举个例子说明csv读写csv文件的方法: import os impo ...
- C/C++读写csv文件
博客转载自:http://blog.csdn.net/u012234115/article/details/64465398 C++ 读写CSV文件,注意一下格式即可 #include <ios ...
- JAVA读写CSV文件
最近工作需要,需要读写CSV文件的数据,简单封装了一下 依赖读写CSV文件只需引用`javacsv`这个依赖就可以了 <dependency> <groupId>net.sou ...
- (Python基础教程之十二)Python读写CSV文件
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
随机推荐
- 我要进大厂之大数据ZooKeeper知识点(1)
01 让我们一起学大数据 老刘又回来啦!在实验室师兄师姐都找完工作之后,在结束各种科研工作之后,老刘现在也要为找工作而努力了,要开始大数据各个知识点的复习总结了.老刘会分享出自己的知识点总结,一是希望 ...
- php socket 编程问题总结
1. PHP declare(ticks=N); 的作用 https://blog.csdn.net/udefined/article/details/24333333 2. pack &&a ...
- Redis 未授权访问漏洞批量提权
一.getshell前提 ①能有对 /root/.ssh/目录写入的权限 ②目标机开启22端口 二.安装依赖 sudo easy_install redis 三.使用 redis python hac ...
- Network_01
(从实践中学习TCP/IP协议读书笔记) 准备工作: 安装Kali Linux系统: 在VMWare中安装,选Debian 8.x 64bit,ISO镜像地址,在下载完镜像后,在VMWare中把镜像挂 ...
- Xrepo:一个现代化的跨平台 C/C++ 包管理器
xrepo 是一个基于 Xmake 的跨平台 C/C++ 包管理器. 项目源码 官方文档 它基于 xmake 提供的运行时,但却是一个完整独立的包管理程序,相比 vcpkg/homebrew 此类包管 ...
- 简单好用的TCP/UDP高并发性能测试工具
工具下载地址: 链接:https://pan.baidu.com/s/1fJ6Kz-mfFu_RANrgKqYiyA 提取码:0pyf 最近测试智能设备的远程的性能,思路主要是通过UDP对IP和端口发 ...
- iOS中字符串转float类型失真的解决办法
最近在做项目的过程中,偶然遇到了一个问题,就是字符串和浮点类型的转换.以往都是通过[NSString stringWithFormat:@"%d",goodcount]这种方式转换 ...
- Java线程池一:线程基础
最近精读Netty源码,读到NioEventLoop部分的时候,发现对Java线程&线程池有些概念还有困惑, 所以深入总结一下 线程创建 Java线程创建主要有三种方式:继承Thread类.实 ...
- jvm系列(一)运行时数据区
C++程序员肩负着每一个对象生命周期开始到终结的维护责任.Java程序员则可以借助自动内存管理机制,不需要自己手动去释放内存.由虚拟机进行内存管理,不容易出现内存泄漏和内存溢出的问题,但是一旦出现这些 ...
- oracle ddl 与 dml
DDL create table 创建表 alter table 修改表 drop table 删除表 truncate table 删除表中所有行 create index 创建索引 drop in ...