csv文件叫做逗号分隔值文件,每一行内容都是通过逗号来区分不同列
csv文件可以直接通过Excel打开,以行列的形式保存和显示数据,但是csv不能存储方法和函数
文件对象.open()
文件对象.close()
with open() as 文件对象:
操作文件
csv.reader(文件对象) -- 获取文件内容返回一个迭代器,并且以列表为单位返回每一行内容
csv.Dictreader(文件对象) -- 获取文件内容返回一个迭代器,并且以字典为单位返回第二行开始的每一行内容(字典的键是第一行内容)
# 示例 获取文件中每个地区的平均薪资 --老师版本
from re import findall
with open('file2/lagou.csv','r',encoding='utf-8') as file:
reader=csv.DictReader(file)
# 处理数据
cities={}
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 = cities.get(c, [])
moneys.append((int(start)+int(end))/2)
# print(moneys)
cities[c]=moneys
for key in cities:
print(key,round(sum(cities[key])/len(cities[key]),2))
f=open(文件路径,'w',encoding='utf-8',newline='') # newline='' 在写入内容的时候不会隔行
| 方法 | 作用 | 用法 |
|---|---|---|
csv.writer(文件对象) | 创建writer对象 这个对象在写入数据的时候一行对应一个列表 | |
csv.DictWriter(文件对象,键列表) | 创建writer对象,字典为单位写入数据 |
方法1:
# a. 以列表为单位写入一行内容
writer=csv.writer(f)
# 一次写入一行内容
writer.writerow(['姓名','年龄','性别'])
# 一次写入多行内容
writer.writerows([
['小花',18,'女'],
['张三',19,'男']
])
方法2:
# b.以字典为单位写入一行内容
writer=csv.DictWriter(f,['姓名','年龄','性别'])
# 写入文件头
writer.writeheader()
# 一次写入一行内容
writer.writerow({'姓名':'小兰','年龄':20,'性别':'女'})
工作簿:一个Excel文件就是一个工作簿
工作表:一个工作簿中可以有多个工作表(至少一个)
单元格:单元格是Excel文件保存数据的基本单位
行号和列号:可以确定单元格位置
| 方式1 | 方式2 |
|---|---|
import openpyxlworkbook=openpyxl.open(excel文件路径) | workbook=openpyxl.load_workbook(excel文件路径) |
| 方式1 | 方式2 |
|---|---|
工作簿对象.active | 工作簿对象[工作表名称] |
| 获取活跃表,关闭文件之前选中的表 | 获取指定名字对应的工作表 |
工作表对象.cell(行号,列号)
cell1=sheet2.cell(9,2)
单元格.value
print(cell1.value)
工作表对象.max_row 工作表对象.max_column
注意:不管以什么的样方式对Excel进行操作,必须保存,否则无效
工作簿对象=openpyxl.Workbook()
import openpyxl
workbook=openpyxl.Workbook()
工作簿对象.save(文件路径)
import openpyxl
workbook=openpyxl.Workbook()
workbook.save('file2/students.xlsx')
# 方法1
import openpyxl
try:
workbook = openpyxl.open('file2/students.xlsx')
except FileNotFoundError:
workbook = openpyxl.Workbook()
workbook.save('file2/students.xlsx')
# 方法2
import os
import openpyxl
# os.path.exists(文件路径) -- 判读那文件是否存在,存在则返回True,不存在则返回False
if os.path.exists('file2/students.xlsx'):
workbook = openpyxl.open('file2/students.xlsx')
else:
workbook = openpyxl.Workbook()
workbook.save('file2/students.xlsx')
2.1 工作表的写操作
工作簿对象.create_sheet(表名,下标)
import openpyxl
workbook = openpyxl.open('file2/students.xlsx')
workbook.create_sheet('python',0)
workbook.save('file2/students.xlsx')
if 'python' in workbook.sheetnames:
sheet = workbook['python']
else:
workbook.create_sheet('python')
workbook.save('file2/students.xlsx')
工作簿对象.remove(工作表对象)
import openpyxl
workbook = openpyxl.open('file2/students.xlsx')
workbook.remove(workbook['Sheet'])
workbook.save('file2/students.xlsx')
if 'Sheet' in workbook.sheetnames:
workbook.remove(workbook['Sheet'])
workbook.save('file2/students.xlsx')
单元格对象.value=数据
python_sheet = workbook['python']
python_sheet.cell(1, 3).value = '电话'
python_sheet.cell(2, 1).value = 'ewqewrq'
workbook.save('file2/students.xlsx')
import openpyxl
# 新建工作簿对象
try:
workbook = openpyxl.open('file2/students.xlsx')
except FileNotFoundError:
workbook = openpyxl.Workbook()
workbook.save('file2/students.xlsx')
# 新建表
if 'python' in workbook.sheetnames:
sheet = workbook['python']
else:
workbook.create_sheet('python')
workbook.save('file2/students.xlsx')
# 删除
if 'Sheet' in workbook.sheetnames:
workbook.remove(workbook['Sheet'])
workbook.save('file2/students.xlsx')
# 操作单元格
python_sheet = workbook['python']
python_sheet.cell(1, 3).value = '电话'
python_sheet.cell(2, 1).value = 'ewqewrq'
workbook.save('file2/students.xlsx')
安装python就可以为计算机提供一个python的系统环境
程序员根据自己的需要自己创建的python环境
能够创建虚拟环境的前提:存在系统环境
虚拟环境的存在可以让第三方库根据类别或者项目分开管理
使用pycharm创建
pycharm-file-settings-Project-Python Interperter--点击下拉框切换位置
使用指令创建
import openpyxl