文件读写
1.文本文件的读写(.txt)
语法:
f = open(“打开的文件”,“方式”)
读取
f.close()
with open("读写的文件","打开文件的方式") as f:
读取或者写入的代码
缩进的时候一般建议四个空格
open方法如果不指定读取方式,则就是读模式 r
案例1:读取文件内容,查看文件指针
f = open("file01.txt")
# 读取内容
"""
read():如果不指定读取的字符个数,则表示将文本中所有内容全部读取出来,是一个字符串
read(2):从文件指针开始的位置读取两个字符
"""
# 获取文件指针
print(f"开始时候文件指针位置:{f.tell()}")
info = f.read(2)
# 获取文件指针
print(f"读取两个字符后文件指针位置:{f.tell()}")
print(info)
案例2:移动文件指针,读取内容
f = open("file01.txt")
# 获取文件指针
print(f"开始时候文件指针位置:{f.tell()}")
# 启动文件指针
f.seek(4)
print(f"移动后文件指针的位置文件指针位置:{f.tell()}")
# 移动文件指针后在读取内容
print(f.read(2))
注意:在windows操作系统中 换行 实际包含两个操作 分别是回车和换行
案例3:readlines() readline()
f = open("file01.txt")
# readlines() 读取字符串中所有内容,将结果放在了一个列表中,将每一行后面的换行符也会读取进去
# ['qwertyu\n', 'asdfgh\n', 'plmnbv']
# print(f.readlines())
# 从当前文件指针开始的位置读取一行
# f.readline(2) 从当前文件指针的位置读取两个字符
print(f.readline(2))
r+ 模块,可读可写,文件不存在不会创建,文件指针在左上角第一行开始位置,写入的时候,要注意文件指针,不然会覆盖原内容
# 写入内容
f.write("hellowoniu")
# 读取内容
# print(f.readlines())
# 从文件指针开始的位置写入内容
# f.write("helloworld")
w:只能写入内容,会将原文件所有内容覆盖掉,如果写入的文件不存在,则会创建该文件,然后写入内容
f = open("file04.txt", "w")
# 写入内容
f.write("hellowoniu")
w+模式:可读可写(可读可写都会清除原文件的内容),文件不存在则会创建,
f = open("file04.txt", "w+")
# # 写入内容
f.write("hellowoniu")
# 获取文件指针
print(f.tell())
f.seek(0)
# 读取内容
print(f.read())
a模式:只能用于写入,文件不存在则会创建,文件指针在文件的末尾
# a模式,是末尾追加
f = open("file05.txt", "a")
# # 写入内容
f.write("python")
a+模式,可读可写,文件指针在文件的末尾,会采用追加的方式,添加内容到文件末尾,如果要读取内容, 则需要移动文件指针在0的位置
f = open("file01.txt", "a+")
f.seek(0)
# 读取内容
print(f.read())
# # 写入内容
# f.write("python")
with open用法
# with open 会自动调用close方法
# with open 可以同时操作多个文件
with open('file01.txt') as f1,open('file05.txt', 'a+') as f2:
# 从file01.txt中读取内容
f1_list = f1.readlines()
# 给f2中写入一个列表
f2.writelines(f1_list)
文件内容中文的问题
# 如果有中文,则需要指定编码格式为 utf-8
with open("file05.txt", 'r', encoding="utf-8") as f1:
f1_list = f1.readlines()
print(f1_list)
2.Excel文件的的读写
自动化测试数据可以放在Excel中进行管理,要通过代码将测试数据读取回来
利用第三方库 openpyxl 来处理,这个库既可以读取,也可以写入,只能处理xlsx这种格式,老的Excel格式无法处理
安装
pip install openpyxl
使用openpyxl创建Excel表格
from openpyxl import Workbook
# 创建一个Excel对象
wb = Workbook()
# 获取Excel中默认的sheet对象
sheet_obj = wb.active
# 给当前的sheet中 添加内容
# 方式一:
sheet_obj["B2"] = "80"
# 方式二:
sheet_obj.cell(2, 1).value = "张无忌"
# 修改当前sheet的名字
sheet_obj.title = "学生成绩表"
# 保存
wb.save("信息表.xlsx")
创建Excel表格。写入一个字典
from openpyxl import Workbook
name_age = {
'段天涯' : 10,
'上官海棠' : 9,
'归海一刀' : 9,
'成是非' : 2,
'古三通' : 50,
'朱无视' : 52,
'曹正淳' : 43,
'万三千' : 23,
}
# 创建Excel表格对象
wb = Workbook()
# 获取默认的sheet对象
ws = wb.active
# 修改默认sheet的名字
ws.title = "成绩"
# 设置表头
ws["A1"] = "姓名"
ws["B1"] = "成绩"
# 定义一个变量,用来模拟行号
i = 2
# 使用items()可以将字典转换为一个可迭代的对象,每次循环取出一个键值对,将键值对分别赋值给name和age
for name, age in name_age.items():
# 写入字典到Excel中
# 写入姓名
ws.cell(i, 1).value = name
# 写入成绩
ws.cell(i, 2).value = age
# 每次循环要给行号加1
i += 1
# 保存
wb.save("天下第一.xlsx")
创建Excel表格,写入一个列表或者元组
from openpyxl import Workbook
name_ages = [
('段天涯',10),
('上官海棠',9),
('归海一刀' ,9),
('成是非', 2),
('古三通', 50),
('朱无视', 52),
('曹正淳',43),
('万三千', 23),
]
# 创建一个Excel表格对象
wb = Workbook()
# 指定获取默认的sheet
ws = wb.active
# 设置sheet的名字
ws.title = "成绩"
# 设置标题
ws["A1"] = "姓名"
ws["B1"] = "年龄"
# 定义一个变量
i = 2
for line in name_ages:
# 从元组中取出 姓名和成绩
name = line[0]
age = line[1]
# 给Excel表格中写入内容
ws.cell(i, 1).value = name
ws.cell(i, 2).value = age
i += 1
wb.save("天下第二.xlsx")
创建sheet
from openpyxl import Workbook
# 创建一个Excel表格对象
wb = Workbook()
# 手动创建sheet
wb.create_sheet("年龄", 0)
wb.create_sheet("工龄", 1)
wb.create_sheet("学龄", 2)
# 选择 名字 是学龄的sheet
ws = wb["学龄"]
ws["B2"] = "helloworld"
wb.save("hello.xlsx")
获取所有的sheet名字
from openpyxl import Workbook
# 创建一个Excel表格对象
wb = Workbook()
# 手动创建sheet
wb.create_sheet("年龄", 0)
wb.create_sheet("工龄", 1)
wb.create_sheet("学龄", 2)
# 获取表格中所有的sheet
print(wb.sheetnames)
# 选择 名字 是学龄的sheet
ws = wb["学龄"]
ws["B2"] = "helloworld"
wb.save("hello01.xlsx")
max_column
max_row
对于表数据的修改
from openpyxl import load_workbook
# 指定操作的表格
wb = load_workbook("202108131238151282162 .xlsx")
# 选择sheet
ws = wb["分组分批"]
# 修改内容
ws["B12"] = "张飞"
ws.cell(13, 5).value = "第2组"
# 保存的时候,如果名字和打开文件的时候保持一致,则是在原文文件修改,如果不一致则是另存为
wb.save("202108131238151282162 .xlsx")
插入行、插入列
# 插入行 插入列
from openpyxl import load_workbook
# 指定需要操作的Excel
wb = load_workbook("202108131238151282162 .xlsx")
# 指定sheet
ws = wb["分组分批"]
# 插入行 , 在第五行的位置插入一行(空行)
# ws.insert_rows(5)
# 在第七行的位置插入三行空行
ws.insert_rows(7, 3)
# 插入列, 在第三列 的位置插入一列
# ws.insert_cols(3)
# 在第三列的位置插入两列
ws.insert_cols(3, 2)
# 保存的时候,如果名字和打开文件的时候保持一致,则是在原文文件修改,如果不一致则是另存为
wb.save("202108131238151282162 .xlsx")
删除行、删除列
# 删除行和删除列
from openpyxl import load_workbook
# 指定需要操作的Excel
wb = load_workbook("202108131238151282162 .xlsx")
# 指定sheet
ws = wb["分组分批"]
# 删除那个位置的多少行
ws.delete_rows(7, 3)
# 删除列
ws.delete_cols(3, 2)
wb.save("202108131238151282162 .xlsx")
获取最大行和最大列
max_column
max_row
from openpyxl import load_workbook
# 指定需要操作的Excel
wb = load_workbook("202108131238151282162 .xlsx")
# 指定sheet
ws = wb["分组分批"]
# max_column
# max_row
# 获取最大行
rows = ws.max_row
print(rows)
# 获取最大列
cols = ws.max_column
print(cols)
wb.save("202108131238151282162 .xlsx")
练习
# [["段天涯", "50"], ["陈是非","243"]]
from openpyxl import load_workbook
# 指定需要操作的Excel表格
wb = load_workbook("天下第一.xlsx")
# 指定sheet
ws = wb["成绩"]
# 获取最大行
rows = ws.max_row
print(rows)
# 获取最大列
cols = ws.max_column
print(cols)
# 保存处理过程的内容
name_age = []
# 获取内容,根据行号和列号
for r in range(2, rows+1):
# 定义一个列表,用例保存每次循环产生的值
row_list = []
for c in range(1, cols+1):
# 取值
row_list.append(ws.cell(r, c).value)
# 将小列表添加到大列表
name_age.append(row_list)
print(name_age)