总结
txt -----(自动化的日志)
xlrd 只支持读。xlsx,xls。无则新建,有则修改。索引从0开始
xlwt 只支持写。xlsx,xls。无则新建,有则修改。索引从0开始
openpyxl 支持读写且不覆盖原内容,只支持xlsx,必须操作有一个已经存在的excel文件。接口自动化-数据。索引从1开始
总结:打开文件,读取内容/写入内容,位置,保存退出
from openpyxl import load_workbook # 可以对已存在的Excel文件进行读写操作
from openpyxl import workbook # 可以新建Excel文件
# 使用load_workbook来实现Excel读写
# 1.打开Excel文件(已存在,cases.xlsx为文件名),
wb = load_workbook("cases.xlsx")
# 一个Excel文件由那些组成:文件名,表单,单元格
# 第一个参数为文件名,会返回一个workbook对象(相当整个Excel文件)
# 2.定位表单
# 方法一:
# ws = wb['multiply'] # ws为worksheet对象(相当如Excel中的一个表单,multiply是Excel中第一个sheet的名字)
# 方法二:
ws = wb.active # 获取第一个表单
# 3.定位单元格
one_cell = ws.cell(row=2,column=2) # one_cell为cell对象(相当于表单中的某个单元格,获取第二行第二列的数据) #不加value 结果显示为:
print(one_cell.value)
|
文件操作
Python提供了file(文件)的方法,这种方法在我们日常工作中也是经常用到,比如我们要把自动化的日志写入到一个文件中,对文件的内容进行修改等,都可以用file提供的方法来实现。
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数
格式:
open(file_name,access_mode)
1.file_name:文件路径,必填参数。
2.access_mode:打开文件的模式。只读,写入,追加等, 文件默认访问模式为只读(r)。
Access mode参数
写入读写追加,只读。读写
access_mode参数有:
w 打开一个文件只用于写入,如果文件存在,清空文本内容再写入,否则新建文件后写入内容
wb 以二进制格式打开一个文件只用于写入
w+ 打开一个文件用于读写。如果文件存在,清空文本内容再写入,否则新建文件后写入内容
a 打开文件追加内容,存在文件,在文件原内容后增加,否则新建写入
a+ 打开一个文件用于读写。存在文件,在文件原内容后增加,否则新建用于读写
ab 以二进制格式打开一个文件用于追加,存在文件,在文件原内容后增加,否则新建写 入
ab+ 以二进制格式打开一个文件用于读写。存在文件,在文件原内容后增加,否则新建用于读写
r 以只读方式打开文件。文件的指针将在文件开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。一般用于非文本文件如图片等
r+ 打开一个文件用于读写(文件的指针将在文件开头)
文件操作常用方法
对于file文件的使用流程:1.打开文件--2.读或者写--3.关闭文件
1.打开文件:f=open(文件名,模式)
2.写:f.write(写入的文本内容)
3.读:f.read([字符数量]) f.readline() f.readlines()
4.关闭文件:f.close()
5.tell() : 文件的当前位置,即tell是获取文件指针位置
6.seek()方法格式:移动文件读取指针到制定位置 #seek(0):第一位
ValueError: I/O operation on closed file.说明文件是关闭状态
总结: w模式会覆盖内容,a模式在原有内容新增
+的区别就是即可读又可以写入,注意鼠标的指针位置
write:
read:
a
b:代表二进制
代码案例
1-w模式,写入
打开一个文件,mode设置为w。
w:表示打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wirte():写入文本内容的方法
案例1:以写入的方式打开一个不存在的文件,写入数据,关闭文件
案例2:以写入的方式打开一个存在的文件,写入新的数据,关闭文件
总结:w和w+模式一样,把文件清空后,再写入新的内容。
文件操作w模式:覆盖写入,写入后鼠标指针在最后
file=open(file='./test.txt',mode='w+',encoding='utf-8') #file代表是一个文件对象txt,excel
file.write('456')
file.seek(0)
print(file.tell())
print('读取所有的内容:',file.read())
file.close()
2-a模式,追加。a+:读+写
打开一个文件,mode设置为a:
a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
wirte():写入文本内容的方法
案例1:以写入的方式打开一个不存在的文件,写入数据,关闭文件
案例2:以写入的方式打开一个存在的文件,要求写入新的数据不会覆盖原来的数据,关闭文件
总结:a和a+模式一样,在原本的内容后追加写入新的内容。
file=open(file='./test.txt',mode='a+',encoding='utf-8') #file代表是一个文件对象txt,excel
# file.write('\n第二行的数据')
# file.write('\n第三行的数据')
file.write('hjh')
tell=file.tell()#获取文件指针位置
print(tell)
file.seek(0)
print('读取所有的内容:',file.read())
file.close()
3-r模式-读
file=open(file='./test.txt',mode='r+',encoding='utf-8') #file代表是一个文件对象txt,excel res1=file.read() #读取所有的内容,参数n表示指定长度 print('文件所有的内容:',res1,type(res1))
打开一个文件,mode设置为r:
r:表示以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式,r可以省略。这种模式下不具有写的权限,只能查看文本内容,不能改写文本内容。
read(n):读取指定字节长度的内容,不指定长度,默认读取所有的内容
readline():一行一行读取文件内容
readlines():读取文件所有内容,返还到一个列表中
案例1:读取t4.txt文件中2个字符的内容
案例2:读取t4.txt文件中第一行的内容
案例3:读取t4.txt文件中所有的内容
file=open(file='./test.txt',mode='r+',encoding='utf-8') #file代表是一个文件对象txt,excel
res1=file.read() #读取所有的内容,参数n表示指定长度
print('文件所有的内容:',res1,type(res1))
print(file.tell())
file.write('111')
print(file.tell())
res2=file.readline() #读取一行内容, #结果为字符串
print('按行读取:',res2)
res3=file.readlines() #结果为列表['追加3\n', '追加4222']
print('读取所有的行:',res3)
for line in file.readlines():
print(line)
4- r+模式,读写
对于读写模式,必须是先读后写,因为光标默认在开头位置,当读完了以后再进行写入。频率最高的模式 就是r+
注意:在r+模式下,如果读取了内容, 不论读取内容多少,光标显示的是多少,再写入或者操作文件的时候都是在结尾进行的操作。
案例1:读取t4.txt文件中所有的内容后再在末尾添加'web自动化测试'
思考:添加新内容后,如果再次读取文件中的所有内容
file.seek():移动指针
总结-read()/readline()/readlines()
总结:
read():的弊端就是当文件很大的时候,将文件中的内容全部读取,存放在内存中这样会导致内存奔溃。
readline():读取出来的数据在后面都有一个\n,读取之后会自动换行。!!!!!确定对吗???
readlines():如果文件很大,占内存,容易崩盘。 \n
大文件读取:
如果文件很大,不推荐用read(),readlines()这两种方法,以上方法都是将文件一次性全部读取到 内存中,内存容易奔溃占内存,容易崩盘。
推荐用readline(),或者循环的方式
读取和写入不能同时存在,不然readline和readlines会为空值,读取不出来
file=open(file='./test.txt',mode='r+',encoding='utf-8') #file代表的是一个文件对象:txt,excel
# res1=file.read() #读取所有的内容,参数n表示指定长度
# print('文件所有的内容:',res1,type(res1))
# print(file.tell())
# file.write('111')
# print(file.tell())
res2=file.readline() #读取一行内容,
print('按行读取:',res2)
res3=file.readlines()
print('读取所有的行:',res3)
for line in file.readlines():
print(line)
file模式总结
PPT有图片
with..as
通过使用with...as...不用手动关闭文件。当执行完内容后,自动关闭文件。执行一条就关闭了,后面的代码块没有执行。
python操作文件时,需要打开文件,最后手动关闭文件。
语法结构:
with open(路径,模式) as 变量:
代码块
代码:
with open('test.txt',mode='r') as file:
print(file.readlines()) 返回一个列表。#['1291318937\n', '12\n', '13\n', '111']
Excel操作
数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道
常用的库是 python-excel 系列:xlrd(read)、xlwt(write)、xlutils、openpyxl
1.xlrd - 读取 Excel 文件,支持.xls和.xlsx格式
2.xlwt - 写入 Excel 文件,支持.xls和.xlsx格式
3.xlutils - 操作 Excel 文件的实用工具,如复制、分割、筛选等
4.openpyxl - 既可以读文件、也可以写文件、也可以修改文件;但是,openpyxl 库 不支持 xls 格式的Excel文档,如果要读写xls格式的文档,可以使用 Excel 进行相应的格式转化,或者使用xlwt库来进行写的操作。
xlwt/xlrd库安装
1、安装xlwt库:
pip3 install xlwt
pip install xlwt
pip3 install xlwt –i http://pypi.douban.com/simple/
2.安装xlrd库:
pip3 install xlrd
pip install xlrd
pip3 install xlrd –i http://pypi.douban.com/simple/
3.查看已安装的库:
pip3 list
pip list
pip show xlwt
xlwt 是 Python 用来在 Excel 写入数据和格式化数据的工具包,是用来生成兼容 Excel 97/2000/XP/2003,只支持.xls格式。只支持写入,不支持读取。
2.1.1xlwt创建xls文件并写入数据
import xlwt
book=xlwt.Workbook(encoding='utf-8')
sheet_text=book.add_sheet('login')
sheet_text.write(0,0,'username')
sheet_text.write(0,1,'password')
sheet_text.write(0,2,'phone')
book.save('./LOGIN.xlsx')
案例1:创建一个新.xls文件,sheet 重命名为info,并写入数据,保存为 login.xls
xlwt创建xls文件并写入操作步骤:
1.导包 : import xlwt
2.创建一个对象(.xls文件) : book=xlwt.Workbook(encoding='utf-8')
3.添加一个sheet工作表,表名称叫username_passwd : sheet_test=book.add_sheet('username_passwd')
4.添加内容:
方式一:给每个单元格添加值,单元格行和列分别从0开始
# sheet_test.write(0,0,'username')#3.给每个单元格添加值,单元格行和列分别从0开始(0,0)表示第一行第一列的单元格
# sheet_test.write(0,1,'password')#4.给每个单元格添加值,单元格行和列分别从0开始(0,0)表示第一行第一列的单元格
# sheet_test.write(0,2,'phone')#3.给每个单元格添加值,单元格行和列分别从0开始(0,0)表示第一行第一列的单元格
方式二:给每一行添加值
row2=['muzi','123456']
for i in range(len(row2)):
sheet_test.write(1,i,row2[i]) #第二行 1.0 1.1 ,1.2
5.保存文件: book.save(文件名.xls)
2.1.2xlwt打开已有xls文件并追加写入数据跟xlutils配合使用(很少用)
python可以使用xlrd读excel,使用xlwt写excel,但是如果要把数据写入已存在的excel,需要另外一个库xlutils配合使用.
大概思路:
1.用xlrd.open_workbook打开已有的xsl文件
2.注意添加参数formatting_info=True,得以保存之前数据的格式
3.然后用from xlutils.copy import copy;,之后的copy去从打开的 xlrd的Book变量中,拷贝出一份,成为新的xlwt的Workbook变量
4.然后对于xlwt的Workbook变量,就是正常的:
5.通过get_sheet去获得对应的sheet,拿到sheet变量后,就可以往 sheet中,写入新的数据
6.写完新数据后,最终save保存
案例2:打开文件userinfo.xls,写入数据,并保存源文件
打开文件userinfo.xls,写入数据,并保存
import xlrd
from xlutils.copy import copy
rb = xIrd.open _workbook('userinfo.xls', formatting_info=True)
wb = copy(rb)
# 通过索引获取sheet,索引从0开始
ws = wb.get_sheet (0)
# 通过sheet名称获取sheet,sheet名称必须是唯一的
# ws = wb.get_sheet('teacher info')
ws.write(4.0."hello world')
wb.save('userinfo. xIs')
使用 xlrd 能够很方便的读取 excel 文件内容, 而且这是个跨平台的库,能 够在 windows,linux/unix,等平台上面使用。xlrd支持读取.xls和.xlsx格式 的Excel文件,`只支持读取,不支持写入`。
注意:
使 用 xlrd 读 取 .xlsx 文 件 的 数 据 出 现 报 错 (raise XLRDEroor...xlrd.biffh.XLRDError:Excel xlsx file;not supported), 原因是2.0.1版本的xlrd不支持xlsx格式数据的读取了,解决方法:卸载 2.0.1版本的xlrd,重新安装指定版本(1.2.0)的xlrd
指定版本安装库的命令:pip install xlrd==1.2.0
xlrd读取xls/xlsx文件操作步骤:
1.导包: import xlrd
2.打开一个文件(.xls或者.xlsx文件) : book=xlrd.open_workbook('login.xls')
3.使用sheet工作表:
sh1=book.sheet_by_name('login') 或者
sh1=book.sheet_by_index(0) 工作表的索引从0开始
4.读取sheet工作表的属性信息
当前sheet名称: sh1.name;
当前sheet的总行数: sh1.nrows;
当前sheet总列数: sh1.ncols
xls/xlsx文件所有sheet名称: book.sheet_names()
5.读取sheet工作表存储的文本内容
1)读取某一行:row1=sh1.row_values(0)
2)读取某一列:col1=sh1.col_values(0)
3)读取某一个单元格:
cell1=sh1.cell_value(0,0)
cell2=sh1.cell(0,1).value
案例1:分别读取userinfo.xls、api.xlsx文件中的内容
代码
import xlrd
excel=xlrd.open_workbook(filename='./test.xlsx') #打开一个文件(.xls或者.xlsx文件)
sheet_test=excel.sheet_by_name('test1') #使用名称为test1的sheet工作表
sheet_test1=excel.sheet_by_index(0) #使用sheet工作表,0代表第一个表格
print(sheet_test.name,sheet_test1.name)
sheet_all=excel.sheet_names() #xls/xlsx文件所有sheet名称:返回的是一个列表
print(sheet_all)
当前sheet的总行数:sh1.nrows; 当前sheet总列数:sh1.ncols
print(sheet_test.nrows,sheet_test.ncols)
取某一行:row1=sh1.row_values(0) #第一行
print(sheet_test.row_values(1,0,3)) #读取第2行,从第一个到第3个结束。左闭又开。返回列表
sh1.cell_value(0,0) #读取某一个单元格
print(sheet_test.cell_value(1,1))
'openpyxl:即可读取也可以写入,而且不会覆盖原有的数据:
与xlrd,xlwt的区别
只支持xlsx格式,支持excel函数公式
必须操作有一个已经存在的excel文件
索引从1开始 !!!!!!!! 注意注意索引!!!!!!!!!!!!!!!
openpyxl安装
安装openpyxl库:
pip3 install openpyxl
pip install openpyxl
pip3 install openpyxl –i http://pypi.douban.com/simple/
openpyxl读写xlsx文件
openpyxl模块是一个读写Excel 2010文档(.xlsx格式)的Python库,如果要处理更早格式的Excel文档(.xls),需要用到额外的库,openpyxl是一个比较 综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目 基本只支持读或者写Excel一种功能。
openpyxl不支持.xls格式,但是支持.xlsx格式的读取写入,并且支持写入公式等。
1.导包: import openpyxl
2.打开文件(.xlsx文件): book = openpyxl.load_workbook(文件名)
3.使用sheet工作表: sh1=book.active或者sh1=book['Sheet1']
4.读取sheet工作表的属性信息
当前sheet的名称: sh1.title
当前sheet的总行数: sh1.max_row
当前sheet的总列数: sh1.max_column
读取单元格: cell1 = sh1['A1'].value A1代表表格A行1列(A,1)
sh1.cell(row=1, column=1).value 代表表格A行1列(A,1)
xlsx文件所有sheet名称:book.sheetnames
openpyxl读取xlsx文件数据的操作流程:
5. 读取数据
1)按单元格读取:cell1 = sh1['A1'].value 或者cell2= sh1.cell(1,2).value
行和列的索引值是从1开始的
openpyxl打开xlsx文件写入数据的操作流程:
1.导包: import openpyxl
2.打开文件(.xlsx文件):book = openpyxl.load_workbook(文件名)
3.使用sheet工作表: sh1=book.active或者sh1=book['Sheet1']
4.写入数据
1)单元格写入:sh1['F2'] = 'PASS' 行和列的索引值是从1开始的
2)整行写入:
new_row = ['post-xml接口', 'post', 'https://httpbin.org/post']
sh1.append(new_row)
5.保存文件:book.save(文件名.xlsx)
案例-openpyxl打开xlsx文件写入数据
案例代码: openpyxl步骤—写入一个或一行数据
import openpyxl
book = openpyxl.load_workbook('test.xlsx') #打开文件(.xlsx文件),book表格excel对象
# #sheet_test=book.active #book.active # 获取第一个表单
sheet_test=book['test1'] #book对象(相当如Excel中的一个表单
# print(sheet_test.title) #表名
# #4.写入数据
# 写法一:sheet_test['F4'] = 'daomingsi'
# 写法二:sheet_test.cell(1,2).value='success'
#
# #写入一行数据
# new_row = ['post-xml接口', 'post', 'https://httpbin.org/post']
# sheet_test.append(new_row)
#
# #5.保存数据
# book.save(filename='test.xlsx')
openpyxl创建新的xlsx文件写入数据的操作流程:
1.导包: import openpyxl
2.创建一个新的workbook对象: wb=openpyxl.Workbook()
3.创建新工作表: sheet=wb.create_sheet(**index=0,title='First Sheet'**)
4.写入数据
1)单元格写入:
sh1['F2'] = 'PASS' 或者 sh1.cell(3,6).value='FAIL' 行和列的索引值是从1开始的
2)整行写入:
new_row = ['post-xml接口', 'post', 'https://httpbin.org/post']
sh1.append(new_row)
5.保存文件:book.save(文件名.xlsx)
code-openpyxl创建xlsx文件写入数据
案例2:创建新的xlsx文件,并写入数据(自定义),保存为login.xlsx
xlwt:excel表格的写入,不支持读取,覆盖写入,而不是追加
报错: [Errno 13] Permission denied: './test.xlsx'说明你的文件打开的状态,先保存关闭文件
1.homework:写入一列数据['a','b','c',]
2.通过xlrd读取excel文件
usernamer password phone
admin 123456 1638749385094
写一个函数,返回的值
[
{
"username":"admin",
"password":"123456",
"phone":"1638749385094",
},
]