csv文件叫逗号分割值文件:每一行内容通过逗号区分不同列。
csv文件可直接通过Excel打开,以行列的形式保存和显示数据,但相对Excel文件,只能存储数据,不能保存公式和函数。
导入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()
导入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})
安装python就可以为计算机提供一个python的系统环境。
程序员根据自己需要创建的python环境。
能创建虚拟环境的前提:存在系统环境。
1)提供Python解释器
2)提供第三方库
虚拟环境可以让第三方库根据类别或者项目分开管理。
1)工作时:一个项目一个虚拟环境,且将虚拟环境直接放在项目中。
2)学习时:一类项目一个虚拟环境,不同类别的虚拟环境放在一个地方。
使用pycharm创建(windows)
file -> Settings -> Project -> Python Interpreter
点击红色方框的箭头下拉,点击show all
最后点击OK就创建好了,使用这个虚拟环境可以将模块安装在这个环境里。
使用指令创建
导入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)
导入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')