Python基础08

文件读写

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值