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)

 

posted @ 2020-11-28 17:55  Malakh  阅读(326)  评论(1编辑  收藏  举报