读取json文件
with open(r'C:\Users\Administrator\Desktop\test_openapi.json', encoding='utf-8') as f:
data = json.load(f)
return data
返回的data类型为dict
写入json文件
with open('Urls.json','w',encoding="utf-8") as f:
json.dump(data,f)
读取yaml文件
import yaml
f = open(r"F:\接口自动化\api-autotest\util\template.yml", "r",encoding='utf-8')
data = yaml.load(f)
f.close()
print(data)
print(type(data))
返回的data类型为dict
写入yaml文件
def write_yaml_file(data,file):
f=open(filepath+'.yml',"w",encoding='utf-8')
yaml.dump(data,f,allow_unicode=True)
f.close()
读取txt文件
with open('text.txt',encoding='utf-8') as f:
content=f.readlines()
print(content)
f.readline()以列表返回内容。
text文件
结果
D:\软件\python.exe D:/flask_project/Blog_web/1.py
['这里有一个参数“encoding”。这个参数特别有用,\n', '它可以在打开文件的时候将文件转换为UTF-8编码格式,从而避免乱码的出现。\n', '这个参数只有Python 3有,在Python 2中使用这个参数会报错。\n', '如果文件是在Windows中创建的,并且使用UTF-8打开文件出现了乱码,可以把编码格式改为GBK。']
Process finished with exit code 0
f.read()直接把文件里面的全部内容用一个字符串返回
import json
with open(r'D:\工作\企业微信\WXWork\1688851028142000\Cache\File\2023-07\text.txt', 'r') as f:
content = f.read()
content=json.loads(content)
print(content)
print(type(content))
读取txt文件内的列表嵌套字典数据,返回的content类型为list
读取Excel文件
openpyxl
import openpyxl
workbook = openpyxl.load_workbook(r'D:\工作\企业微信\WXWork\1688851028142000\Cache\File\2023-07\test.xlsx')
worksheet = workbook.get_sheet_by_name('Sheet2')
row3=[item.value for item in list(worksheet.columns)[0]]
# print(row3)
返回一列的数据
openpyxl
from openpyxl import load_workbook, Workbook
if __name__ == "__main__":
# 创建一个workbook
file_name = r'c:\test.xlsx'
wb = Workbook()
# 创建一个sheet,名为iTesting,把它插入到最前的位置
wb.create_sheet('iTesting',0)
# 创建一个sheet,名为VIPTEST,把它插入index为1的位置
wb.create_sheet('VIPTEST',1)
# 保存表格
wb.save(file_name)
# 读和写
# 初始化表格
wb2 = load_workbook(file_name)
# 读,获取所有的sheet名称
print(wb2.sheetnames)
# 获取sheet名为iTesting的表格
s = wb2['iTesting']
# 将A1行的值设置为iTesting
s['A1'] = 'iTesting'
# 将第2行,第一列的值设置为1
s.cell(row=2, column=1).value = 1
# 打印第2行第一列单元格的值 --方法1
print(s.cell(row=2,column=1).value)
# 打印第2行第一列单元格的值 --方法2
print(s['A2'].value)
# 保存表格
wb.save(file_name)
将Excel数据读取为列表嵌套元组
workbook = openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\test.xlsx')
cases_list = []
worksheet = workbook.get_sheet_by_name('Sheet1')
cells=worksheet[worksheet.dimensions]
datas = list(worksheet.iter_rows(values_only=True)) # 获取Excel表中的所有数据,每一行组成元组,整个数据组成列表
print(datas)
case_datas = datas[1:] # 获取表数据
for case in case_datas:
cases_list.append(case)
print(cases_list)
pandas
Pandas 是一个强大的分析结构化数据的工具集,它的使用基础是 Numpy(提供高性能的矩阵运算);Pandas 用于数据挖掘和数据分析,同时也提供数据清洗功能。使用 Pandas 操作 Excel 数据,就好像数数那样简单。
Pandas安装
-
# pandas默认依赖xlrd库,故先安装xlrd
-
pip install xlrd
-
# 安装Pandas
-
pip install Pandas
Pandas 语法
import Pandas as pd
# 首先初始化,engine默认是xlrd
s = pd.ExcelFile(path_or_buffer, engine=None)
# 接着parse
s.parse(sheet_name=0,header=0,names=None,index_col=None,usecols=None,
squeeze=False,converters=None,true_values=None,false_values=None,
skiprows=None,nrows=None,na_values=None,parse_dates=False,
date_parser=None,thousands=None,comment=None,skipfooter=0,
convert_float=True,mangle_dupe_cols=True,**kwds,)
Pandas 读取 Excel 文件非常简单,首先使用 Pandas 初始化 ExcelFile。其两个参数path_or_buffer 是我们要读取的文件路径。
Excel 文件名称建议使用英文路径及英文命名方式,尽量不要使用中文。
import pandas as pd
path_or_buffer = r'D:\_Automation\lagouAPITest\tests_pytest_ddt\test_baidu_ddt.xlsx'
engine 是供 Pandas 使用的 engine,可选项为“xlrd”“openpyxl”“odf”和“pyxlsb”,如果不提供,默认使用 xlrd。
parse 函数的参数
初始化后,可以使用 s.parse() 函数。parse 函数有非常多的参数,在此我列出常用的几个。
-
sheet_name: Excel 的 sheet 名
sheet_name 可以是整型数字、列表名,或者上述两者组合。
# 通过整型数字读取。读取第一个sheet。 Pandas sheet名下标以0开始
s = pd.ExcelFile(path_or_buffer, sheet_name = 0)
# 通过列表名读取
data = s.parse(sheet_name = 'iTesting')
# 通过index读取。读取第一个sheet
data = s.parse(sheet_name = 0)
#组合读取。读取第4个sheet,名为iTesting的sheet以及第7个sheet
data = s.parse(sheet_name = [3, 'iTesting', 'Sheet6'])
-
header:使用哪一行作为列名
header 默认值为 0,即第一行,也可以设置为 [0, x]。
(例如 [0,1] 意味着将前两行作为多重索引)
data = s.parse(sheet_name = 'iTesting', header = 0)
需要注意: Pandas 默认使用第一行为 header,所以在 Excel 里,第一行必须是 title,如果第一行是数据,将会导致第一行数据被遗漏。如果不想要 header,可以参数传递 header=None。
-
usecols:待读取的列
usecols 接收整型,从 0 开始,例如 [0, 1, 2],也可以使用列名例如 “A:D, F”,表示读取 A 到 D 列,以及 F 列。
data = s.parse(sheet_name = 'iTesting', usecols='A:D')
-
skiprows:读取时,跳过特定行
skiprows=n,跳过前 n 行;skiprows = [a, b, c],跳过第 a+1、b+1、c+1 行(索引从0开始)
data = s.parse(sheet_name = 'iTesting', skiprows = [1,2,3])
-
nrows:需要读取的行数
仅仅列出要读取的行数
data = s.parse(sheet_name = 'iTesting', nrows = 3)
使用 Pandas 读取 Excel 数据:
def read_data_from_pandas(excel_file, sheet_name):
if not os.path.exists(excel_file):
raise ValueError("File not exists")
# 初始化
s = pd.ExcelFile(excel_file)
# 解析Excel Sheet
df = s.parse(sheet_name)
# 以list格式返回数据
return df.values.tolist()
可以看到,使用 pandas 读取 Excel 数据更加简洁方便。
写入txt文件
直接将一大段字符串写入到文本中f.write()
with open('text.txt','w',encoding='utf-8') as f:
f.write('你好啊')
会清空text.txt,并写入。
f.writelines(['1','2','3'])
把列表里面的所有字符串写入到文本中。
python写到文本中的文字是不会自动换行的,需要人工输入换行符才可以
with open('text.txt','w',encoding='utf-8') as f:
f.writelines("早上好")
f.writelines('\n中午好\n')
f.write('晚上好')
读CSV文件
csv本质上是一个文本文件
csv文件
import csv
with open('hello.csv',encoding='utf-8') as f:
reader=csv.DictReader(f)
for row in reader:
print(row)
结果,得到一个字典。
写入CSV文件
Python可以把一个字典写成CSV文件,或者把一个包含字典的列表写成CSV文件。Python写CSV文件比读CSV文件稍微复杂一点,因为要指定列名。列名要和字典的Key一一对应。
import csv
data=[{'name':'kingname','age':24,'salary':9999},
{'name':'meiji','age':20,'salary':100},
{'name':'xiaoming','age':30,'salary':2300}
]
with open('new.csv','w',encoding='utf-8')as f:
write=csv.DictWriter(f,fieldnames=['name','age','salary'])#写入CSV文件的列名行:
write.writeheader()
write.writerows(data)#将包含字典的列表全部写入到CSV文件中
write.writerow({'name':'张三','age':30,'salary':2300})#写入单个字典
输出结果: