• 基础语言-第18天-csv、Excel文件操作


    csv、Excel文件操作

    一、csv文件操作

    1.定义

    csv文件叫逗号分割值文件:每一行内容通过逗号区分不同列。

    csv文件可直接通过Excel打开,以行列的形式保存和显示数据,但相对Excel文件,只能存储数据,不能保存公式和函数。

    2.csv文件读操作

    • 导入csv库

      import csv    
      
      • 1
    • 打开文件

      open(csv文件路径, 'r', encoding='utf-8')
      
      可以不用手动关闭文件,文件操作结束就关闭文件。
      with open('files/data.csv', 'w', encoding='utf-8', newline='') as f:
       pass
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 文件读操作

      1)csv.reader(文件对象):
      获取文件内容返回一个迭代器,以列表为单位返回每一行内容。
      2)csv.DictReader(文件对象):
      获取文件内容返回一个迭代器,以字典为单位返回第二行开始的每一行内容,第一行内容为字典的键,。
      
      • 1
      • 2
      • 3
      • 4
    • 关闭文件

      文件对象.close()
      
      • 1
    • 总的读操作流程代码

      import csv    # 先导包
      
      # 1)创建打开csv文件
      f = open('files/电影.csv', 'r', encoding='utf-8', newline='')
      
      # 2)获取文件内容
      # (1)csv.reader(文件对象): 获取文件内容返回一个迭代器,以列表为单位返回每一行内容。
      # reader1 = csv.reader(f)
      # print(list(reader1))
      
      # (2)csv.DictReader(文件对象):获取文件内容返回一个迭代器,以字典为单位返回第二行开始的每一行内容,第一行内容为字典的键,。
      reader2 = csv.DictReader(f)
      print(list(reader2))
      
      # 3)关闭文件
      f.close()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16

    3.csv文件写操作

    • 导入csv库

    • 打开文件

      open('files/data.csv', 'w', encoding='utf-8', newline='')
      
      • 1
    • 文件写操作:创建writer对象

      1)csv.writer(): 创建writer对象,写入数据时一行对应一个列表。

      2)csv.DictWriter(): 创建writer对象,以字典为单位写入数据。

    • 关闭文件

      文件对象.close()
      
      • 1
    • 总的代码

      with open('files/data.csv', 'w', encoding='utf-8', newline='') as f:
          # ===========列表写入==========
          # writer1 = csv.writer(f)
          # # 一次写入一行
          # writer1.writerow(['姓名', '出生日期', '性别', '年龄'])
          # writer1.writerow(['小明', '19990616', '男', 23])
          # # 一次写入多行内容
          # writer1.writerows([
          #     ['小明', '19990616', '男', 23],
          #     ['小花', '19991216', '女', 23]
          # ])
      
          # ===========字典写入==========
          writer2 = csv.DictWriter(f, ['姓名', '出生日期', '性别', '年龄'])
          # 将字典的键写入文件开头
          writer2.writeheader()
      
          # 一次写入一行内容
          writer2.writerow({'姓名': '小华', '出生日期': '19890101', '性别': '男', '年龄': 33})
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19

    二、虚拟环境

    1.系统环境

    安装python就可以为计算机提供一个python的系统环境。
    
    • 1

    2.虚拟环境

    程序员根据自己需要创建的python环境。
    能创建虚拟环境的前提:存在系统环境。
    
    • 1
    • 2

    3.环境的作用

    1)提供Python解释器
    2)提供第三方库
    虚拟环境可以让第三方库根据类别或者项目分开管理。
    
    • 1
    • 2
    • 3

    4.使用虚拟环境建议

    1)工作时:一个项目一个虚拟环境,且将虚拟环境直接放在项目中。
    2)学习时:一类项目一个虚拟环境,不同类别的虚拟环境放在一个地方。
    
    • 1
    • 2

    5.创建虚拟环境

    • 使用pycharm创建(windows)

      file -> Settings -> Project -> Python Interpreter
      
      • 1

      在这里插入图片描述
      点击红色方框的箭头下拉,点击show all
      在这里插入图片描述
      在这里插入图片描述
      最后点击OK就创建好了,使用这个虚拟环境可以将模块安装在这个环境里。

    • 使用指令创建

    三、Excel文件操作

    1.认识Excel文件

    • 工作簿:一个excel文件就是一个工作簿
    • 工作表:一个工作簿中可以有多个工作表(至少一个)
    • 单元格:单元格是excel文件保存数据的基本单位
    • 行号和列号:确定单元格位置

    2.Excel文件读操作

    • 导入openpyxl库

      import openpyxl
      
      • 1
    • 打开Excel文件创建工作簿对象

      openpyxl.open(excel文件路径)
      openpyxl.load_workbook(文件路径)
      
      • 1
      • 2
    • 获取工作表

      工作簿对象.active
      工作簿对象.['工作表名称']
      
      • 1
      • 2
    • 获取单元格

      工作表对象.cell(行号,列号)
      
      • 1
    • 获取单元格内容

      单元格对象.value
      
      • 1
    • 获取最大行号和最大列号(保存了数据的有效行和有效列)

      工作表对象.max_row
      工作表对象.max_column
      
      • 1
      • 2
    • 总的Excel文件读操作代码

      import openpyxl
      
      # 1)打开excel文件创建工作簿对象
      # workbook = openpyxl.open('files/三国人物数据.xlsx')
      workbook = openpyxl.load_workbook('files/三国人物数据.xlsx')
      
      # 获取工作簿中所有的工作表的表名
      result = workbook.sheetnames
      print(result)       # ['全部人物数据', '三个国家的武力', '三个国家武将的武力', '三国武将数据', '三国文官数据']
      
      # 2)获取工作表
      sheet1 = workbook.active    # 获取1
      print(sheet1)
      
      sheet2 = workbook['三国武将数据']    # 获取2
      print(sheet2)
      
      # 3)获取单元格
      cell1 = sheet2.cell(8, 1)
      cell2 = sheet2.cell(12, 1)
      print(cell1, cell2)
      
      # 4)获取单元格内容
      print(cell1.value)
      print(cell2.value)
      
      # 5)获取最大行号和最大列号(保存了数据的有效行和有效列)
      # 工作表对象.max_row
      # 工作表对象.max_column
      print(sheet2.max_row)
      print(sheet2.max_column)
      
      
      # 获取表中内容例子
      # 获取第一列所有数据
      column1 = []
      for row in range(1, sheet2.max_row+1):
          cell = sheet2.cell(row, 1)
          column1.append(cell.value)
      
      print(column1)
      
      # 获取第一列到第3列所有的数据
      for col in range(1, 4):
          column = []
          for row in range(1, sheet2.max_row+1):
              cell = sheet2.cell(row, col)
              column.append(cell.value)
          print(column)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49

    3.Excel文件写操作

    • 导入openpyxl库

      import openpyxl
      
      • 1
    • 新建工作簿:

      a.新建工作簿对象 - Workbook

      workbook = openpyxl.Workbook()
      
      • 1

      注意:生活中实际: 实际新建工作簿需要先判断工作簿对应的文件是否已经存在,存在就不需要新建,不存在才新建。

    • 工作表操作

      a.创建工作表 - create_sheet

      工作簿对象.create_sheet(表名)
      
      • 1

      注意:实际中的新建表:没有的时候才新建,有的时候直接打开

      b.删除工作表 - remove

      工作簿对象.remove(工作表对象)
      实际中的删除表:有的时候才删除
      
      • 1
      • 2
    • 单元格的写操作

      单元格对象.value = 数据
      
      • 1
    • 保存文件

      工作簿对象.save(文件路径)
      
      • 1
    • excel文件写操作总的流程代码

      import openpyxl
      
      # 1)新建工作簿
      # 方法一:异常捕获
      try:
          workbook = openpyxl.open('files/students.xlsx')
      except FileNotFoundError:
          workbook = openpyxl.Workbook()
          
      # 2)新建工作表
      # a.创建工作表
      # 实际中的新建表:没有的时候才新建,有的时候直接打开
      if 'Python' in workbook.sheetnames:
         sheet = workbook['Python']
      else:
         workbook.create_sheet('Python')
      
      # b.删除工作表
      # 实际中的删除表:有的时候才删除
      if 'Sheet1' in workbook.sheetnames:
          workbook.remove(workbook['Sheet1'])
      print(workbook.sheetnames)
      
      # 3)单元格的写操作
      # 单元格对象.value = 数据
      java_sheet = workbook['Java']
      java_sheet.cell(1,3).value = '电话'   # 增加
      java_sheet.cell(2,1).value = None   # 删除
      java_sheet.cell(2,2).value = 'stu003'    # 修改
      
      # 4)保存
      workbook.save('files/students.xlsx')
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
  • 相关阅读:
    助力,NTP网络时间服务器(GPS北斗时钟)助力精准大数据
    素数筛法代码-总结(Python,C++)
    zabbix监控网络连接状态
    Spring启动流程
    敏捷开发的实施要素和实现敏捷的实际改进
    E. Non-Decreasing Dilemma
    使用虚拟机搭建代码托管、持续集成系统
    RK3568笔记分享之“如何挂载SPI FRAM铁电存储芯片”——飞凌嵌入式
    JavaEE 网络原理——TCP的工作机制(初篇 包含 UDP 协议的再次阐述)
    考研机试题
  • 原文地址:https://blog.csdn.net/simple_daytime/article/details/126273475