Day 18
补充:虚拟环境
1.系统环境:
- 安装Python就可以为计算机提供一个python的体统环境
2.虚拟环境
- 程序员根据自己的需要创建的Python环境
- 能够提供虚拟环境的前提:存在系统环境
3.环境的作用
- 提供Python解释器
- 提供第三方库
- 虚拟环境的存在可以让第三方库根据类别或者项目分开管理
4.使用虚拟环境的建议:
- 工作的时候:一个项目一个虚拟环境,并且将虚拟环境直接放在项目中
- 学习的时候:一类项目一个虚拟环境,不同类别的虚拟环境全部放在一个地方
5.怎么创建虚拟环境
一、csv文件的读操作
1.什么是csv文件
- csv文件叫做都好分割值文件:每一行内容是通过逗号来区分出不同的列
- csv文件可以直接通过excel文件打开,以行列的形式保存和显示数据,但是相对excel,他只能存储数据,不能保存公式和函数。
2.csv读操作
import csv
f = open('csv/电影.csv','r',encoding='utf-8')
- 创建reader获取文件内容
- csv.reader(文件对象):获取文件内容返回一个迭代器,并且以列表为单位返回每一行内容
- csv.DictReader(文件对象)获取文件内容返回一个迭代器,并且以字典为单位返回第二行开始的每一行内容(字典的值是第一行的内容)
f = open('csv/电影.csv', 'r', encoding='utf-8')
reader2 = csv.DictReader(f)
print(list(reader2))
f.close()
三、csv的写操作
1.csv的写操作
- 打开文件(因为要进行写操作,所以打开方式选择写操作)
f = open('csv/电影.csv','w',encoding='utf-8')
- 创建write对象
- csv.writer(文件对象):创建write对象,这个对象在写入数据的时候一行对应一个列表
- csv.DictWriter(文件对象,键列表):创建write对象,以字典为单位写入内容
f = open('csv/学生信息.csv','w',encoding='utf-8')
writer = csv.writer(f)
writer.writer.row(['姓名','出生日期','性别','电话'])
writer.writer.row(['小明','1999-09-19','男','14547'])
writer.writer.row(
['小化','1989-03-29','女','147547']
['小花','2001-07-11','女','132059']
)
writer.writer.row({'姓名':'小海','出生日期':'1997-02-04','性别':'男','电话':'145782'})
writer.writer.row(
{'姓名':'小张','出生日期':'1999-10-23','性别':'男','电话':'157482'}
{'姓名':'小王','出生日期':'1998-12-14','性别':'男','电话':'122682'}
)
四、excel文件的读操作
1.认识excel文件
- 1.工作簿 :一个excel文件叫一个工作簿
- 2.工作表 :一个工作簿可以有多个工作表(至少一个)
- 3.单元格 :单元格是excel文件保存数据的基本单位
- 4.行号和列号 :可以确定单元格位置
2.获取excel文件内容
-
- 打开excel文件创建工作簿对象
- openpyxl.open(文件对象)
- openpyxl.load_workbook(文件对象)
workbook = openpxl.open('excel/三国人物数据.xlsx')
workbook = openpyxl.load_workbook('csv/三国人物数据.xlsxl')
-
- 获取所有工作表的表名:文件对象.sheetnames
result = workbook.sheetnames
print(result)
-
- 获取工作表
- 工作簿对象.active:获取活跃表
- 工作簿对象[表名]:获取指定表
sheet1 = workbook.active
sheet2 = workbook['三国武将数据']
print(sheet1,sheet2)
-
- 获取单元格
- 工作表.cell(行号,列号)
- 单元格对象.value
cell1 = sheet.cell(8,1)
cell2 = sheet.cell(12,1)
print(cell1.value,cell2.value)
-
- 获取最大行号和列号(保存了数据的有效行和有效列)
- 工作表对象.max_row
- 工作表对象.max_column
print(sheet2.max_row,sheet2.max_column)
column1 = []
for row in range(1, sheet2.max_row+1):
cell = sheet2.cell(row, 1)
column1.append(cell.value)
print(column1)
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)
四、excel文件的写操作
不管以什么样的方式对excel进行写操作,最后都要保存,不然操作无效。
1.新建工作簿
-
- 新建工作簿对象
- 实际中新建工作簿的时候需要先判断工作簿对应的文件是否已经存在,存在就不需要新建,不存在才新建
-
- 保存:工作簿对象.save(‘文件路径’)
workbook = openpyxl.Workbook()
workbook.save('excel/student.xlsx')
try:
workbook = openpyxl.open('files/student2.xlsx')
except FileNotFoundError:
workbook = openpyxl.Workbook()
workbook.save('files/student2.xlsx')
import os
if os.path.exists('files/student2.xlsx'):
workbook = openpyxl.open('files/student2.xlsx')
else:
workbook = openpyxl.Workbook()
workbook.save('files/student2.xlsx')
2.excel文件的写操作
- 1.新建工作表
- 工作簿对象.create_sheet(表名,下标)
- 实际中的新建表:没有的时候才新建,有的时候直接打开
workbook.create_sheet()
workbook.create_sheet('Python')
workbook.create_sheet('Java', 0)
workbook.save('files/student2.xlsx')
if 'Python' in workbook.sheetnames:
sheet = workbook['Python']
else:
sheet = workbook.create_sheet('Python')
workbook.save('files/student2.xlsx')
-
- 删除工作表
- 工作簿.remove(工作表对象)
- 实际中删除表:存在的时候才能删
workbook.remove(workbook['Sheet1'])
workbook.save('files/student2.xlsx')
if 'Sheet1' in workbook.sheetnames:
workbook.remove(workbook['Sheet1'])
workbook.save('files/student2.xlsx')
- 3.单元格的写操作
- 单元格对象.value = 数据(有就是修改,没有就是添加,= None 就是删除)
java_sheet = workbook['Java']
java_sheet.cell(1, 3).value = '电话'
java_sheet.cell(2, 1).value = None
java_sheet.cell(4, 2).value = 'stu003'
workbook.save('files/student2.xlsx')