zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    java获取本机IP和主机名
    SSH框架总结(框架分析+环境搭建+实例源代码下载)
    Centos7安装mysql8教程
    jquery 操作HTML data全局属性缓存的坑
    mysql协议分析2---认证包
    mysql协议分析1---报文的格式和基本类型
    TCP三次握手抓包理解
    java读写文件小心缓存数组
    spring 事务隔离级别导致的bug
    mysql 不同版本下 group by 组内排序的差异
  • 原文地址:https://www.cnblogs.com/azxsdcv/p/14053401.html
Copyright © 2011-2022 走看看