18 - csv与Excel文件的读写操作

Day 18

补充:虚拟环境

1.系统环境:

  • 安装Python就可以为计算机提供一个python的体统环境

2.虚拟环境

  • 程序员根据自己的需要创建的Python环境
  • 能够提供虚拟环境的前提:存在系统环境

3.环境的作用

  • 提供Python解释器
  • 提供第三方库
  • 虚拟环境的存在可以让第三方库根据类别或者项目分开管理

4.使用虚拟环境的建议:

  • 工作的时候:一个项目一个虚拟环境,并且将虚拟环境直接放在项目中
  • 学习的时候:一类项目一个虚拟环境,不同类别的虚拟环境全部放在一个地方

5.怎么创建虚拟环境

  • 使用pycharm创建
    • 打开设置页面
  • 使用指令创建

一、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')

# reader1 = csv.reader(f)
# print(list(reader1))
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对象,以字典为单位写入内容
#  csv.writer(文件对象)
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']
)


# csv.DictWriter(文件对象,键列表)
# 写入文件头
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文件内容

    1. 打开excel文件创建工作簿对象
    • openpyxl.open(文件对象)
    • openpyxl.load_workbook(文件对象)
workbook = openpxl.open('excel/三国人物数据.xlsx')
workbook = openpyxl.load_workbook('csv/三国人物数据.xlsxl')
    1. 获取所有工作表的表名:文件对象.sheetnames
result = workbook.sheetnames
print(result)  # ['全部人物数据', '三个国家的武力', '三个国家武将的武力', '三国武将数据', '三国文官数据']
    1. 获取工作表
    • 工作簿对象.active:获取活跃表
    • 工作簿对象[表名]:获取指定表
sheet1 = workbook.active
sheet2 = workbook['三国武将数据']
print(sheet1,sheet2)
# <Worksheet "三个国家的武力"> <Worksheet "三国武将数据">
    1. 获取单元格
    • 工作表.cell(行号,列号)
    • 单元格对象.value
cell1 = sheet.cell(8,1)
cell2 = sheet.cell(12,1)
print(cell1.value,cell2.value)
# 蔡瑁  曹操

    1. 获取最大行号和列号(保存了数据的有效行和有效列)
    • 工作表对象.max_row
    • 工作表对象.max_column
# 获取最大行号和列号
print(sheet2.max_row,sheet2.max_column)  # 424  11

# 获取第一列所有数据
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)
    
    # ['姓名', '阿会喃', '鲍隆', '鲍信', '卑衍', .....]
    # ['性别', '男', '男', '男', '男', '男', .....]
    # ['统御', 65, 59, 78, 60, 57, 47, 77, .....]

四、excel文件的写操作

不管以什么样的方式对excel进行写操作,最后都要保存,不然操作无效。

1.新建工作簿

    1. 新建工作簿对象
    • 实际中新建工作簿的时候需要先判断工作簿对应的文件是否已经存在,存在就不需要新建,不存在才新建
    1. 保存:工作簿对象.save(‘文件路径’)
# 新建工作簿对象
workbook = openpyxl.Workbook()
workbook.save('excel/student.xlsx')

# 实际中新建工作簿
#方法1

try:
    workbook = openpyxl.open('files/student2.xlsx')
except FileNotFoundError:
    workbook = openpyxl.Workbook()
    workbook.save('files/student2.xlsx')
    
# 方法2    
import os
# os.path.exists(文件路径)  -  判断指定文件是否存在,存在返回True,不存在返回False
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')
    1. 删除工作表
    • 工作簿.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')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python自带的csv、xlrd、xlwt、openpyxl、docx等库实现CSVExcel、Word文件的创建和读写操作。例如,使用csv库可以通过以下代码将数据写入CSV文件中: ```python import csv data = [['name', 'age', 'gender'], ['Tom', 18, 'male'], ['Lily', 20, 'female']] filename = 'data.csv' with open(filename, 'w', newline='') as f: writer = csv.writer(f) for row in data: writer.writerow(row) ``` 使用xlwt库可以通过以下代码将数据写入Excel文件中: ```python import xlwt data = [['name', 'age', 'gender'], ['Tom', 18, 'male'], ['Lily', 20, 'female']] filename = 'data.xls' workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('Sheet1') for i, row in enumerate(data): for j, col in enumerate(row): worksheet.write(i, j, col) workbook.save(filename) ``` 使用openpyxl库可以通过以下代码将数据写入Excel文件中: ```python import openpyxl data = [['name', 'age', 'gender'], ['Tom', 18, 'male'], ['Lily', 20, 'female']] filename = 'data.xlsx' workbook = openpyxl.Workbook() worksheet = workbook.active for row in data: worksheet.append(row) workbook.save(filename) ``` 使用docx库可以通过以下代码将数据写入Word文件中: ```python import docx data = [['name', 'age', 'gender'], ['Tom', 18, 'male'], ['Lily', 20, 'female']] filename = 'data.docx' document = docx.Document() for row in data: table = document.add_table(rows=1, cols=len(row)) hdr_cells = table.rows[0].cells for i, col in enumerate(row): hdr_cells[i].text = col document.save(filename) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值