csv(csv模块)、excel(.xlsx)(openpyxl)
csv文件读操作
-
什么是csv文件
csv文件叫逗号分隔值文件 - 每一行内容是通过逗号来区分出不同的列
csv文件可以直接通过excel打开,以行列的形式保存和显示数据,但是相对excel文件,它只能存储数据,不能保存公式和函数。 -
csv读操作
import csv # 1)创建打开csv文件 """ 文件对象.open() 文件对象.close() with open() as 文件对象: 操作文件 """ f = open('files/电影.csv', 'r', encoding='utf-8') # 2)创建reader获取文件内容 """ csv.reader(文件对象) - 获取文件内容返回一个迭代器,并且以列表为单位返回每一行内容 csv.DicReader(文件对象) - 获取文件内容返回一个迭代器,并且以字典为单位返回第2行开始的每一行内容(字典的键是第一行内容) """ # result = csv.reader(f) # print(list(result)) # result2 = csv.DictReader(f) # print(list(result2)) # f.close() """from re import * # 获取 with open('files/lagou.csv', 'r', encoding='utf-8') as f: reader = csv.DictReader(f) # 处理数据 citys = {} for job in reader: c = job['city'] m = job['salary'] result = findall(r'(\d+)k-(\d+)k', m) if not result: continue start, end = result[0] moneys = citys.get(c, []) moneys.append((int(start) + int(end)) / 2) citys[c] = moneys # round(数字, 小数位数) - 让数字保留指定位数的小数 for key in citys: print(key, round(sum(citys[key]) / len(citys[key]), 2))"""
csv文件写操作
-
csv文件写操作
# 1)打开文件 f = open('files/data.csv', 'a', encoding='utf-8', newline='') # 2)创建writer对象 """ a.csv.writer(文件对象) - 创建writer对象,这个对象在写入数据的时候一行对应一个列表 b.csv.DictWriter(文件对象, 键列表) - 创建writer对象,以字典为单位写入数据 """ # a.以列表为单位写入一行内容 writer = csv.writer(f) # 一次写入一行内容 writer.writerow(['姓名', '出生日期', '性别', '电话']) writer.writerow(['小明', '1999-9-9', '男', '110']) # 一次写入多行 writer.writerows([ ['小花', '2001-9-9', '女', '120'], ['张三', '2000-9-9', '男', '119'] ]) # b.以字典为单位写入一行内容 writer = csv.DictWriter(f, ['姓名', '出生日期', '性别', '电话']) # 写入文件头(将字典的键写入到文件开头) writer.writeheader() # 一次写入一行内容 writer.writerow({'姓名': 'xiaoming', '出生日期': '1999-9-9', '性别': '男', '电话': '110'}) writer.writerows([ {'姓名': 'xiaohua', '出生日期': '1999-9-9', '性别': '男', '电话': '110'}, {'姓名': 'zhangsan', '出生日期': '1999-9-9', '性别': '男', '电话': '110'} ])
虚拟环境
- 系统环境 - 安装python就可以为计算机提供一个Python的系统环境
- 虚拟环境 - 程序员根据需要自己创建的额Python环境
能够创建虚拟环境的前提:存在系统环境 - 环境的作用:
1)提供Python解释器
2)提供第三方库
虚拟环境的存在可以让第三方库根据类别或者项目分开管理。 - 使用虚拟环境的建议:
1)工作的时候:一个项目一个虚拟环境,并且将虚拟环境直接放在项目中
2)学习的时候:一类项目一个虚拟环境,不同类别的虚拟环境全部放在一个地方 - 怎么创建虚拟环境
1)使用Pycharm创建
打开设置页面 ->
2)使用指令创建
excel文件读操作
-
认识excel文件
工作簿:一个excel文件就是一个工作簿
工作表:一个工作簿中可以有多个工作表(至少一个)
单元格:单元格是excel文件保存数据的基本单位
行号和列号:可以确定单元格位置 -
获取excel文件内容
# 1)打开excel文件创建工作簿对象 """ openpyxl.open('excel文件路径') openpyxl.load_workbook('excel文件路径') """ # workbook = openpyxl.open('files/三国人物数据.xlsx') workbook = openpyxl.load_workbook('files/三国人物数据.xlsx') print(workbook) # 获取工作簿中所有的工作表的表名 result = workbook.sheetnames print(result) # ['全部人物数据', '三个国家的武力', '三个国家武将的武力', '三国武将数据', '三国文官数据'] # 2)获取工作表 """ 工作簿对象.active - 获取活跃表(选中的表) 工作簿对象[工作表名称] - 获取指定名字对应的工作表 """ sheet1 = workbook.active print(sheet1) sheet2 = workbook['三国武将数据'] print(sheet2) # 3)获取单元格 """ 工作表对象.cell(行号, 列号) """ cell1 = sheet2.cell(8, 1) cell2 = sheet2.cell(12, 1) print(cell1, cell2) # 4)获取单元格内容 # 单元格对象.value print(cell1.value) print(cell2.value) # 5)获取最大行号和最大列号(保存了数据的有效行和有效列) # 工作表对象.max_row # 工作表对象.max_column print(sheet1.max_row) print(sheet1.max_column) # 获取第一列所有数据 list1 = [] for i in range(1, sheet1.max_row + 1): cell = sheet2.cell(i, 1) list1.append(cell.value) print(list1) # 获取第一列到第三列 for col in range(1, 4): list1 = [] for row in range(1, sheet2.max_row + 1): cell = sheet2.cell(row, col) list1.append(cell.value) print(list1)
excel文件写操作
注意:不管是以什么样的方式对excel文件进行写操作,操作完成后必须保存
-
新建工作簿
# 1)新建工作簿对象 # workbook = openpyxl.Workbook() # 2)保存 # 工作簿对象.save() # workbook.save('files/student.xlsx') # 实际中新建工作簿的时候需要先判断工作簿对应的文件是否存在,存在就不需要新建,不存在才新建 # 方法一: try: workbook = openpyxl.open('files/student2.xlsx') except FileNotFoundError: workbook = openpyxl.Workbook() workbook.save('files/student2.xlsx') # 方法二: """import os # os.path.exists(文件路径) - 判断指定文件是否存在,存在返回True,不存在返回False if os.path.exists('files/student2.xlsx'): workbook = openpyxl.open('files/student2.xlsx') else: workbook = openpyxl.Workbook() workbook.save('files/student2.xlsx')"""
-
工作表的写操作
# 1)新建工作表 # 工作簿对象.create_sheet() # 工作簿对象.create_sheet(表名) # 工作簿对象.create_sheet(表名, 下标) # workbook.create_sheet('java', 1) # workbook.save('files/student2.xlsx') # 实际中的新建表:没有的时候才新建,有的时候直接打开 if '憨憨' in workbook.sheetnames: sheet = workbook['憨憨'] else: sheet = workbook.create_sheet('憨憨') workbook.save('files/student2.xlsx') # 2)删除工作表 # 工作簿对象.remove(工作表对象) # workbook.remove(workbook['Sheet']) # workbook.save('files/student2.xlsx') # 实际中删除表:存在的时候才能删 if '憨憨' in workbook.sheetnames: workbook.remove(workbook['憨憨']) workbook.save('files/student2.xlsx')
-
单元格的写操作
# 单元格对象.value = 数据 Python_sheet = workbook['Python'] Python_sheet.cell(1, 3).value = '电话' Python_sheet.cell(2, 1).value = None Python_sheet.cell(4, 2).value = '5' workbook.save('files/student2.xlsx')