csv文件叫逗号分割值文件 —— 每一行内容是通过逗号来区分出不同的列
csv文件可以直接通过excel打开,以行列的形式保存和显示数据,但是相对Excel文件,它只能存储数据,不能保存公式和函数。
引入模块
import csv
'''
文件对象 = open()
操作文件
文件对象.close()
with open() as 文件对象:
操作文件
'''
f = open('电影.csv', 'r', encoding='utf-8')
csv.reder(文件对象) —— 获取文件内容返回一个迭代器,并且以列表为单位返回每一行内容
reader1 = csv.reader(f)
print(list(reader1))
csv.DictReader(文件对象) —— 获取文件内容返回一个迭代器,并且以字典为单位返回第2行开始的每一行内容(字典的键是第一行内容)
reader2 = csv.DictReader(f)
print(list(reader2))
注意:进行相关操作后需要关闭文件
f.close()
f = open('data.csv', 'w', encoding='utf-8')
方法1:csv.writer(文件对象) —— 创建writer对象,这个对象在写入数据的时候一行对应一个列表
方法2:csv.DictWriter(文件对象, 键列表) —— 创建writer对象,以字典为单位写入数据
a.以列表为单位写入一行内容
writer = csv.writer(f)
# 一次写入一行内容
writer.writerow(['姓名', '出生日期', '性别', '电话'])
writer.writerow(['小明', '1999-9-9', '男', '110'])
# 一次写入多行内容
writer.writerows([
['小花', '2000-3-24', '女', '120'],
['张三', '19998-7-5', '男', '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)使用指令创建
import openpyxl
引入模块
import openpyxl
方法1:openpyxl.open(Excel文件路径)
方法2:openpyx.load_workbook(Excel文件路径)
workbook = openpyxl.open('三国人物数据.xlsx')
# 获取工作簿中所有的工作表的表名
result = workbook.sheetnames
print(result)
方法1:工作簿对象.active —— 获取的是活跃表(被打开,正在编辑的表)
方法2:工作簿对象[工作表名称] —— 获取指定名字对应的工作表
sheet1 = workbook.active
print(sheet1)
sheet2 = workbook['三国武将数据']
print(sheet2)
工作表对象.cell(行号, 列号)
cell = sheet2.cell(8, 1)
print(cell)
单元格.value
print(cell.value)
注意:获取的是文件保存数据部分的最大行列号
行号:工作表对象.max_row
列号:工作表对象.max_column
获取第一列所有数据(遍历)
column1 = []
for row in range(1, sheet2.max_row+1):
cell = sheet2.cell(row, 1)
column1.append(cell.value)
print(column1)
获取第1列到第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)
引入模块
import openpyxl
注意:不管是以什么样的方式对Excel文件进行写操作,操作完成后必须保存
workbook = openpyxl.Workbook()
方法1:工作簿对象.save(文件路径)
方法2:workbook.save(‘保存的Excel.xlsx’)
实际中新建工作簿的时候需要先判断工作簿对应的文件是否已经存在,存在就不需要新建,不存在才新建
方法一:
try:
workbook = openpyxl.open('students.xlsx')
except FileNotFoundError:
workbook = openpyxl.Workbook()
workbook.save('students.xlsx')
方法二:
import os
# os.path.exists(文件路径) - 判断指定文件是否存在,存在返回True,不存在返回False
if os.path.exists('students.xlsx'):
workbook = openpyxl.open('students.xlsx')
else:
workbook = openpyxl.Workbook()
workbook.save('files/student2.xlsx')
工作簿对象.create_sheet(表名, 下标)
workbook.create_sheet()
workbook.create_sheet('Python')
workbook.create_sheet('Java', 0)
workbook.save('students.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')
单元格对象.value = 数据
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('students.xlsx')