<>csv、Excel文件操作
<>一、csv文件操作
<>1.定义
csv文件叫逗号分割值文件:每一行内容通过逗号区分不同列。
csv文件可直接通过Excel打开,以行列的形式保存和显示数据,但相对Excel文件,只能存储数据,不能保存公式和函数。
<>2.csv文件读操作
*
导入csv库
import csv
*
打开文件
open(csv文件路径, 'r', encoding='utf-8') 可以不用手动关闭文件,文件操作结束就关闭文件。 with
open('files/data.csv', 'w', encoding='utf-8', newline='') as f: pass
*
文件读操作
1)csv.reader(文件对象): 获取文件内容返回一个迭代器,以列表为单位返回每一行内容。 2)csv.DictReader(文件对象):
获取文件内容返回一个迭代器,以字典为单位返回第二行开始的每一行内容,第一行内容为字典的键,。
*
关闭文件
文件对象.close()
*
总的读操作流程代码
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()
<>3.csv文件写操作
*
导入csv库
*
打开文件
open('files/data.csv', 'w', encoding='utf-8', newline='')
*
文件写操作:创建writer对象
1)csv.writer(): 创建writer对象,写入数据时一行对应一个列表。
2)csv.DictWriter(): 创建writer对象,以字典为单位写入数据。
*
关闭文件
文件对象.close()
*
总的代码
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.系统环境
安装python就可以为计算机提供一个python的系统环境。
<>2.虚拟环境
程序员根据自己需要创建的python环境。 能创建虚拟环境的前提:存在系统环境。
<>3.环境的作用
1)提供Python解释器 2)提供第三方库 虚拟环境可以让第三方库根据类别或者项目分开管理。
<>4.使用虚拟环境建议
1)工作时:一个项目一个虚拟环境,且将虚拟环境直接放在项目中。 2)学习时:一类项目一个虚拟环境,不同类别的虚拟环境放在一个地方。
<>5.创建虚拟环境
*
使用pycharm创建(windows)
file -> Settings -> Project -> Python Interpreter
点击红色方框的箭头下拉,点击show all
最后点击OK就创建好了,使用这个虚拟环境可以将模块安装在这个环境里。
*
使用指令创建
<>三、Excel文件操作
<>1.认识Excel文件
* 工作簿:一个excel文件就是一个工作簿
* 工作表:一个工作簿中可以有多个工作表(至少一个)
* 单元格:单元格是excel文件保存数据的基本单位
* 行号和列号:确定单元格位置
<>2.Excel文件读操作
*
导入openpyxl库
import openpyxl
*
打开Excel文件创建工作簿对象
openpyxl.open(excel文件路径) openpyxl.load_workbook(文件路径)
*
获取工作表
工作簿对象.active 工作簿对象.['工作表名称']
*
获取单元格
工作表对象.cell(行号,列号)
*
获取单元格内容
单元格对象.value
*
获取最大行号和最大列号(保存了数据的有效行和有效列)
工作表对象.max_row 工作表对象.max_column
*
总的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)
<>3.Excel文件写操作
*
导入openpyxl库
import openpyxl
*
新建工作簿:
a.新建工作簿对象 - Workbook
workbook = openpyxl.Workbook()
注意:生活中实际: 实际新建工作簿需要先判断工作簿对应的文件是否已经存在,存在就不需要新建,不存在才新建。
*
工作表操作
a.创建工作表 - create_sheet
工作簿对象.create_sheet(表名)
注意:实际中的新建表:没有的时候才新建,有的时候直接打开
b.删除工作表 - remove
工作簿对象.remove(工作表对象) 实际中的删除表:有的时候才删除
*
单元格的写操作
单元格对象.value = 数据
*
保存文件
工作簿对象.save(文件路径)
*
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')