拆分表格为多个
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)
csv文件的概念
这应该是你第一次接触csv这种格式的文件吧。那么什么是csv文件呢?
csv是"Comma-Separated Values(逗号分割的值)"的首字母缩写,它其实和txt文件一样,都是纯文本文件。但csv文件可以显示为电子表格的样式,所以我们也可以把csv文件视为一种简化版的电子表格。
简化版是什么意思呢?回顾一下我们常见的Excel表格,不仅有“居中”排版,表格边框等样式,还有各种Excel公式等其他功能,这些功能在csv文件中是不存在的。
正如概念中强调的一样,csv文件是纯文本文件,它只能存储数据。
值得注意的是,csv文件有多种打开方式,如果你使用文本编译器(如记事本)打开它,它就会以文本形式显示;但如果你使用常用的office软件(Excel表格,WPS表格,Numbers表格)打开,csv就会直接显示为表格样式。
如果只是记录数据,不对数据进行操作的话,相较于Excel表格,csv文件会更加简洁轻便。
使用Python来读写csv文件是非常容易的,因为实现csv的读取和写入功能的csv模块,是一个内置模块,我们可以直接使用
当然,使用csv模块时,需要先导入它,即在代码一开始写入import csv。
打开csv文件
了解了什么是csv文件后,接下来就是要用Python来打开它。使用的函数你也很熟悉——open()。
是的,函数open()不仅可以打开txt文本文件,它也可以用来打开csv文件。使用open()打开的文件,都会返回一个文件对象。
与打开txt文本文件稍有不同的地方是,我们需要在open()中传入新的参数newline=''。根据Python官方文档的相关规定,当我们打开csv文件时,需要设置参数newline='',这样可以避免一些不必要的空行
你应该记得,我一直在强调:所有打开的文件对象,都应该被关闭。即使用open()打开文件时,在最后都需要使用方法文件对象.close()来关闭打开的文件
但是,人难免有疏忽的时候。如果不使用该方法,不仅是一种较差的编程习惯,还可能会产生一些异常。
为了避免你出现忘记写close()的情况发生,同时也为了不让程序发生一些意料之外的异常,我要介绍一种不写文件对象.close()的方法,一种更好地打开文件的方法:
with open() as …
with open() as ...是对原有open()和close()的优化。
使用with open() as ...语句后,在with下面的代码块结束时,会自动执行close()关闭文件。
方法是把open()函数放在with后面,把变量名放在as后面,结束时要加冒号:,然后把要执行的文件处理语句缩进到with open() as ...下方的代码块中。
需要特别强调的是,在传统方法中,我们将open()返回的文件对象以变量= open ()的形式赋值给了变量。但在with...as...中时,我们没有使用变量 =的形式,而是直接将变量放在了as后面,如下图所示。
image.png
请务必记住缩进,打开文件之后的其他文件操作,都应该位于with下缩进的代码块中。