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' 中。
# 导入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)