python excel和yaml文件的读取封装

  • Post category:Python

下面为大家介绍如何封装Python读取Excel和YAML文件的操作。

Python读取Excel文件

安装依赖包

首先需要安装openpyxl包,可以使用如下命令进行安装:

pip install openpyxl

ExcelReader类的封装

from openpyxl import load_workbook

class ExcelReader(object):
    def __init__(self, filename, sheetname=None):
        self.wb = load_workbook(filename)
        if sheetname:
            self.sheet = self.wb[sheetname]
        else:
            self.sheet = self.wb.active

    def read(self):
        rows = list(self.sheet.rows)
        title = [r.value for r in rows[0]]
        data_list = []
        for row in rows[1:]:
            data = {}
            for index, cell in enumerate(row):
                data[title[index]] = cell.value
            data_list.append(data)
        return data_list

ExcelReader类的使用

filename = 'testdata.xlsx'
sheetname = 'Sheet1'
reader = ExcelReader(filename, sheetname)
data = reader.read()
print(data)

其中,testdata.xlsx是我们需要读取的Excel文件名,Sheet1是我们想要读取的Sheet页的名称,data则是读取到的数据列表。

Python读取YAML文件

安装依赖包

我们需要安装PyYAML包,可以使用如下命令进行安装:

pip install pyyaml

YAMLReader类的封装

import yaml

class YAMLReader:
    def __init__(self, yamlpath):
        self.yamlpath = yamlpath

    def read(self):
        with open(self.yamlpath, 'r', encoding='utf8') as fp:
            content = fp.read()
        data = yaml.load(content, Loader=yaml.FullLoader)
        return data

YAMLReader类的使用

config_file = 'config.yml'
data = YAMLReader(config_file).read()
print(data)

其中,config.yml是我们需要读取的YAML文件名,data则是读取到的数据字典。

示例

Excel文件示例

如果我们有一个Excel文件(testdata.xlsx),其内容如下:

Name Age Gender
Lily 20 Female
Tom 25 Male

我们可以通过ExcelReader来读取该文件:

filename = 'testdata.xlsx'
sheetname = 'Sheet1'
reader = ExcelReader(filename, sheetname)
data = reader.read()
print(data)

输出结果:

[{'Name': 'Lily', 'Age': 20, 'Gender': 'Female'}, {'Name': 'Tom', 'Age': 25, 'Gender': 'Male'}]

YAML文件示例

如果我们有一个YAML文件(config.yml),其内容如下:

name: "Tom"
age: 25
gender: "Male"

我们可以通过YAMLReader来读取该文件:

config_file = 'config.yml'
data = YAMLReader(config_file).read()
print(data)

输出结果:

{'age': 25, 'gender': 'Male', 'name': 'Tom'}