关键词搜索

源码搜索 ×
×

Python爬虫基础讲解:数据持久化——文件操作 及 Excel

发布2022-03-07浏览465次

详情内容

计算机的文件,就是存储在某种长期储存设备上的一段数据长期存储设备包括:硬盘、U盘、移动硬盘、光盘…

文本文件和二进制文件

文本文件:

可以使用文本编辑软件查看o本质上还是二进制文件

例如: python的源程序

二进制文件:

保存的内容不是给人直接阅读的,而是提供给其他软件使用的。

例如:图片文件、音频文件、视频文件等等

二进制文件不能使用文本编辑软件查看

1. 文件的基本操作

操作文件的函数/方法

在Python中要操作文件需要记住1个函数和3个方法
在这里插入图片描述

  1. open函数负责打开文件,并且返回文件对象
  2. read / write/ close三个方法都需要通过文件对象来调用

1. 1读取文件

open
  • 1

函数的第一个参数是要打开的文件名(文件名区分大小写)

  • 如果文件存在,返回文件操作对象
  • 如果文件不存在,会抛出异常
  • read方法可以一次性读入并返回文件的所有内容
  • close方法负责关闭文件
    如果忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问

注意:read方法执行后,会把文件指针移动到文件的末尾

# 1.打开-文件名需要注意大小写
file = open("README")
 
#2.读取
text = file.read()
print(text)
 
#3.关闭
file.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.2 打开文件的方式

open函数默认以只读方式打开文件,并且返回文件对象
语法如下:

f = open("文件名""访问方式")
  • 1

在这里插入图片描述

提示

频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以只读、只写的方式来操作文件

写入文件示例

#打开文件
f = open ("README""w")
 
f.write( "he17o python! \n")
f.write("今天天气真好")
 
#关闭文件
f.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1.3按行读取文件内容

read()方法
默认会把文件的所有内容一次性读取到内存。如果文件太大,对内存的占用会非常严重。
readline方法
readline方法可以一次读取一行内容。方法执行后,会把文件指针移动到下一行,准备再次读取。这是读取大文件的正确姿势。

2. 目录操作

在终端/文件浏览器、中可以执行常规的文件/目录管理操作,例如:

创建、重命名、删除、改变路径、查看目录内容、…….

在Python中,如果希望通过程序实现上述功能,需要导入os模块

2.1 文件操作

在这里插入图片描述

2.2 目录操作

在这里插入图片描述
提示 : 文件或者目录操作都支持相对路径和绝对路径

Excel

openpyxl是一个Python库,用于读取/写入Excel 2010 xlsx / xlsm / xltx / xltm文件。

它的诞生是因为缺少可从Python本地读取/写入Office Open XML格式的库。

官方文档:

https://openpyxl.readthedocs.io/en/stable/

Excel文件三个对象

workbook:工作簿,一个exce1文件包含多个sheet。
sheet:工作表,一个workbook有多个,表名识别,如“sheet1","sheet2”等。
cel7:单元格,存储数据对象
  • 1
  • 2
  • 3

1、openpyxl 读写单元格时,单元格的坐标位置起始值是(1,1),即下标最小值为1,否则报错!

2、openpyxl支持直接横纵坐标访问,如A1,B2…

#模块安装
pip insta1l openpyx7
  • 1
  • 2

1. 创建工作簿

只需导入workbook 对象就可以创建工作簿

#-*- coding: utf-8 -*-
from openpyx1 import workbook
# 创建工作簿
wb = workbook()
  • 1
  • 2
  • 3
  • 4

如果想写入数据就需要获取一张表

表明创建时会自动命名。它们按顺序编号(Sheet,Sheet1,Sheet2等)。可以随时通过worksheet.title属性更改此名称:

#创建一张表
sheet = wb.activesheet.title ='表1'
 
#创建新表
sheet2 = wb.create_sheet('表2 ')
 
#通过表名获取表
sheet1 = wb['表1']  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2. 写入操作

现在我们知道了如何获取工作表,可以开始修改单元格内容了。单元格可以直接作为工作表的键进行访问:

这将使单元格返回A4,如果尚未存在,则创建一个单元格。可以直接分配值:

#写入值
sheet[ 'A1']= 42
  • 1
  • 2

还有worksheet.ce11()方法可以更方便操作。

sheet.ce17 (row=2,column=5).value = 99
sheet.ce17 (row=3,column=5,value=100)
  • 1
  • 2

逐行写

#行内容可以直接被列表覆盖# ws.append(iterable)
#添加一行到当前sheet的最底部(即逐行追加从第一行开始)
# iterab1e必须是1ist,tuple,dict , range,generator类型的。
# 1,如果是1ist,将1ist从头到尾顺序添加。
# 2,如果是dict,按照相应的键添加相应的键值。
ws.append(['This is A1''This is B1''This is c1'])
ws.append(i 'A': 'This is A1''c': 'This is c1'})
ws.append({1: 'This is A1'3: 'This is c1'})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

同时可以遍历单元格

3. 案例

将九九乘法表写入excel表

#写入九九乘法表
ws9 = wb.create_sheet('九九乘法表')
i = 1
while i < 10:
  j = 1
  while j <= i:
    # print('{]}*= {'.format(j,i,j * i),end=' \t ')
    ws9.ce11(row=i, column=j).value = '{*= {}'.format(j,i, j * i)
    j += 1
  i += 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4. 读表操作

#打开文件:
from openpyx1 import load_workbookwb = load_workbook ( ' sample.x1sx ')
#通过表名获取获取sheet:
tab1e = wb['九九乘法表']
 
#获取行数和列数:
rows = tab1e.max_row
cols = tab1e.max_column
print(rows,co1s)
 
#获取单元格值:
# 获取表格内容,是从第一行第一列是从1开始的,注意不要丢掉.
valueData = table.ce11(row=1,column=1).value
print(Data)
 
# 获取所有表名
sheet_names = wb.sheetnames
print(sheet_names[0]
ws = wb[(wb.sheetnames[0])]# index为0为第一张表
#活动表表名
print(wb.active.title)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

逐行读取

#逐行读ws9[ 'A1:I9']:例如( 'A1:C4')
# 返回一个生成器,注意取值时要用value,例如:
for row in table['A1:I9']:
  for ce17 in row :
    print(ce11.value)
  • 1
  • 2
  • 3
  • 4
  • 5

显示有多少张表

print(wb . sheetnames)
#显示表名,表行数,表列数
print(ws9.title)
print(ws9.max_row)
print(ws9.max_column)
  • 1
  • 2
  • 3
  • 4
  • 5

保存文件

wb.save("samp1e1.x1sx")
  • 1

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载