继承框架 -- python脚本

python中__init_subclass__类方法实现一个脚本框架 当我们一个流程需要执行多个python脚本时,除了直接调用的方式,可以考虑搞一套python框架。优点如下提高开发效率:脚本框架可以提供现成的模板和结构,帮助快速搭建脚本或应用程序。开发者可以专注于实现业务逻辑,而无需重复编写基础代码。标准化项目结构:脚本框架通常提供一致的项目结构和最佳实践,使团队成员更容易协作,维护和扩展代码。内置功能和库:脚本框架通常包含许多内置功能和常用库,例如日志记录、配置管理、命令行参数解析等,减少了额外工作量。易于测试:具备标准化结构和容易复现的环境,可以使单元测试、集成测试和 阅读详情

pdf数据处理写到excl

import openpyxl
import pdfplumber

if __name__ == '__main__':
    # pdf_path = '/Users/xushouchun/Desktop/余佳丽/马素敏评审表(1).pdf'
    # excel_file = '/Users/xushouchun/Desktop/余佳丽/空白文档.xlsx'

    excel_file = input("余老板:请输入excel对应输出地址路径: ").strip("'\"")
    # print(excel_file)
    while True:
        try:
            pdf_path = input("余老板:那个输入一下pdf文件对应地址路径,全路径哦: ").strip("'\"")
            # 正常处理的
            structural = [0, 1, 2, 3, 4, 5, 10, 11]
            # 不能正常处理的
            other_structural = [6, 7, 8, 9, 14, 15]

            # 定义数组
            rows = []
            result = {}
            rows_process = []

            # 打开对应的udf
            with pdfplumber.open(pdf_path) as pdf:
                # 获取第二页(索引为1)
                second_page = pdf.pages[1]  # 页码从0开始,1表示第二页
                tables = second_page.extract_tables()

                # 遍历提取的表格数据并写入 Excel
                for table in tables:
                    # 拿到每一行数据
                    for row in table:
                        rows.append(row)

            # print(rows)

            for index, row in enumerate(rows):
                if index in structural:
                    for i in range(0, len(row), 2):  # 每两个元素为一对
                        if i + 1 < len(row) and row[i] is not None:
                            if row[i + 1] is None:
                                result[row[i].replace("\n", '')] = ''
                            else:
                                if i + 1 < len(rows) and rows[i + 1] is not None:
                                    result[row[i].replace("\n", '')] = row[i + 1]



                elif index in other_structural:
                    rows_process.append(row)

            for i in range(0, len(rows_process), 2):
                if i + 1 < len(rows_process):
                    keys = rows_process[i]
                    values = rows_process[i + 1]
                    for j in range(len(keys)):
                        if keys[j] is not None and j < len(values) and values[j] is not None:
                            if "资格取得时间" in keys[j].replace("\n", ''):
                                if "与评" in values[j].replace("\n", ''):

                                    result["资格取得时间"] = values[j].replace("\n", '').replace("与评", "")
                                else:
                                    values[j].replace("\n", '')
                            else:
                                result[keys[j].replace("\n", '')] = values[j].replace("\n", '')

            # for key, value in result.items():
            #     print(f"{key}: {value}")

            title_data = []
            # 打开对应的udf
            with pdfplumber.open(pdf_path) as pdf:
                # 获取第二页(索引为1)
                second_page = pdf.pages[2]  # 页码从0开始,1表示第二页
                tables = second_page.extract_tables()

                # 遍历提取的表格数据并写入 Excel
                for table in tables:
                    # 拿到每一行数据
                    for row in table:
                        title_data.append(row)

            # 提取教育经历数据
            education_experience = []
            for row in title_data:
                if row[0] == '1.教 育 经 历':
                    # 找到教育经历的起始行,接下来处理行
                    start_index = title_data.index(row) + 1  # 下一个行
                    for data_row in title_data[start_index:]:
                        if data_row[0] == '2.工 作 经 历':  # 一旦找到工作经历部分就停止
                            break
                        education_experience.append(data_row)

            # 清除 None 和空行
            education_experience = [row for row in education_experience if row and any(item for item in row)]

            # 找到最后一条教育经历
            if education_experience:
                last_education = education_experience[-1]  # 获取最后一条
                year = last_education[0]  # 2019
                college = last_education[1]  # 湖南工程学院
                degree = last_education[2]  # 专科
                major = last_education[4]  # 土木工程
                result["第一学历"] = degree
                result["第一毕业院校"] = college
                result["第一专业"] = major
                result["第一毕业时间"] = year

            workbook = openpyxl.load_workbook(excel_file)
            sheet = workbook['Sheet1']
            # 找到最后一行
            last_row = sheet.max_row
            # 表头与输入数据字段的对应关系
            header_mapping = {
                '序号': last_row - 1,  # 可以设置为自增编号
                '姓名': result['姓名'],
                '性别': result['性别'],
                '行业': None,  # 需要输入行业信息
                '身份证件号码': result['身份证件号码'],
                '出生地': result['出生地'],
                '出生日期': result['出生日期'],
                '政治面貌': result['政治面貌'],
                '现从事专业及时间': result['现从事专业及时间'],
                '参加工作时间': result['参加工作时间'],
                '现工作单位': result['现工作单位'],
  

            }

            # 将数据写入下一行
            for col_num, (header, value) in enumerate(header_mapping.items(), start=1):
                sheet.cell(row=last_row + 1, column=col_num, value=value)
            # 保存工作簿
            workbook.save(excel_file)

            cont = input("余老板 : 是否继续输入啊?回车继续哈 n 就结束啦: ")
            if cont.lower() == 'n':
                break
        except Exception as e:
            print("这条数据发生错误/找一下寿春同学:", str(e))


pip install pyinstaller
pyinstaller -F xxx -i xxx -n 脚本
【Python】继承 在Python的面向对象编程(Object-Oriented Programming, OOP)范式中,继承(Inheritance)无疑是三大核心支柱(封装、继承、多态)之一。它不仅仅是一种代码复用的机制,更是一种设计思想,一种构建层次化、模块化、可扩展软件系统的强大工具。本章将从最基础的“为什么”出发,层层深入,揭示继承在软件工程中的核心价值,并为后续的深入剖析奠定坚实的基础。在深入继承之前,我们必须对OOP的一些基本概念有清晰的认识。因为继承是建立在这些概念之上的。那么,继承在OOP中扮演什么角色呢? 阅读详情

相关推荐

python 多继承与继承原理及多继承中super本质

一个子类可以继承多个父类,就是多继承,并且拥有所有父类的属性和方法。 例如 孩子会继承自己的父亲和母亲的特征。 目录 (一)语法 (二)多继承注意事项 (三)钻石继承 (四)多继承中super本质 (一)语法 class 子类名(父类名1,父类名2…) : pass (二)多继承注意事项 如果子类和父类有相同的方法,就会调用子类中的方法。 如果不同的父类中存在着相同的方法...

百雨的博客 4462

python编程语言继承_Python+Selenium中级篇之8-Python中的继承的使用

本文开始介绍一个面向对象设计领域里,很常见的一种思想,继承。继承有很多好处,常听到的一句话就是,子类能够直接使用父类的方法,这样就可以减少子类代码量。其实,在自动化测试框架设计过程中,是很有必要把继承加入到你的测试脚本中去。接下来我们,简单写一个Python文件,来演示下继承的基本使用。1. 在test1包名下新建一个classA.py,这个就是我们的父类,里面有一个打开chrome浏览器和打开百...

weixin_39864453的博客 127

智能环境感知:STM32多传感器数据融合与报警策略设计

本文详细介绍了基于STM32的多传感器数据融合系统设计,整合DHT11温湿度传感器、MQ-2烟雾检测和光照强度检测模块,通过智能算法实现环境感知与动态报警。系统采用数据滤波、多传感器校验和自适应阈值策略,显著提升监测精度与可靠性,并通过OLED显示屏提供清晰的多级报警界面。

plant的博客 200

Python+Selenium 中级篇12 -继承的使用

本文介绍一个面向对象设计领域里,很常见的一种思想,继承。继承有很多好处,常听到的一句话就是,子类能够直接使用父类的方法,这样就可以减少子类代码量。其实,在自动化测试框架设计过程中,是很有必要把继承加入到你的测试脚本中去。 现在baidu目录下建一个inherit.py文件,这个就是我们的父类,里面有一个打开chrome浏览器和打开百度首页的方法。代码如下: import time from selenium import webdriver class Inherit(object): def

伟爵社的博客 881

STM32F407用FSMC+DMA驱动LVGL,3.5寸屏流畅度翻倍实战(附CubeMX配置避坑)

本文详细介绍了如何在STM32F407上通过FSMC+DMA驱动LVGL,显著提升3.5寸屏的显示流畅度。从FSMC与DMA的配置原理到LVGL驱动层适配,提供了完整的优化方案和实测数据,帮助开发者解决界面卡顿问题,实现流畅度翻倍的效果。

weixin_30872499的博客 558

SAP S/4HANA 物料分类账(ML)/实际成本核算(Actual Costing)——底表全景 & CKMLCP 执行后数据变化

插入 ML 重估凭证行项目:Dr/Cr 库存科目(期末库存调整)、Dr/Cr COGS/消耗科目(消耗重估)、Cr/Dr ML 重估抵消科目(PRY/PRV 类逻辑)also STPRS/VERPR/PEINH/LBKUM 等(但 S/4 很多“真理”在 ACDOCA)MLPP / MLPPF / MLCR / MLCRF / MLCD / CKMLMV003/004 等。Material Ledger Document(行项目明细:收货/发票价差/结算写入/重估相关)间接(PUP在CKMLCR;

weixin_52203666的博客 576

python单元测试框架(继承、unittest参数化、断言、测试报告)

继承能解决什么问题?unittest每个模块都要用到前提条件以及清理,如果有上百个模块,我们要改域名和浏览器,就会工作量很大特别麻烦,这时我们可以用继承的思想只用改一次

qq_43371695的博客 154

【上海大学计算机组成原理实验报告】七、程序转移机制

学习实现程序转移的硬件机制//掌握堆栈寄存器的使用//手动方式实现子程序调用转移过程//手动方式实现子程序返回转移过程//编程实现`OUT`寄存器交替显示`11`和`55`//若要求`11`和`55`各显示`50`次后停机,应该如何修改程序?//根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当`LDPC`有效时,如果此时`DUBS`上的值就是转移的目标地址,则此目标地址被打入`PC`,从而实现程序的转移;若`LDPC`为`0`是附带条件的,就形成“条件转移”。

HackerKevon的博客 2470

重写Python脚本时关于建立框架的想法

重写Python脚本时关于建立框架的想法今天本来想再写一个脚本放到服务器里运行,想到脚本的功能时我发现里面有很多功能其实和以前的脚本有些重复了,比如数据库的方法,邮箱的方法,下载方法等等,假如每个脚本里都有这些方法,如果有一天,我换了一个环境,改变了数据库密码,或者想改变邮箱的smtp地址,这时就懵逼了,有多少脚本就需要改多少次数据。有人可能说不用担心,总会有简单的办法,或许这一次有办法,但下一次以

AlgoRain的博客 556

【Frida Android】实战篇8:客户端证书认证绕过 Hook 教程

通过重写类的方法,自定义证书校验逻辑;利用配置文件,从系统层面管理证书信任策略;以及通过 OkHttp 框架提供的方法,实现证书的强绑定校验。这些内容主要围绕客户端如何验证服务端证书的合法性展开。客户端证书认证。当 APK 预置了客户端证书,并且服务端会对客户端证书进行校验时,传统的中间人攻击方式将面临新的挑战。我们将深入分析这种场景的工作原理,并详细介绍如何通过技术手段获取客户端证书、配置中间人工具,最终成功实现抓包分析。

水滴石穿 1425

Android 15.0 app进程保活白名单功能实现

在15.0的系统rom产品开发中,在某些重要的app即使进入后台,产品需求要求也不想被系统杀掉进程,需要app长时间保活,就是app进程保活白名单功能的实现, 所以需要在系统杀进程的时候不杀掉白名单的进程,接下来就看怎么样来实现这些功能

安卓兼职framework和app工程师的博客 637

Python中类的继承

1. 单继承 继承的主要作用是实现代码的重用。继承使得子类拥有父类的方法和属性。 直接来看一个例子吧。 class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink() 从上面的代码可以看出,在编写dog类的时候,我们并没有

hello_JeremyWang的博客 3万+

手把手教你学Simulink——基于全桥 LLC 谐振变换器的双向 DC-DC 建模与仿真

本文详细介绍了基于Simulink的双向全桥LLC谐振变换器建模与仿真方法。内容涵盖:1)LLC谐振变换器背景与双向化挑战;2)系统架构设计及关键数学推导(FHA增益分析、双向控制逻辑);3)Simulink建模步骤(功率级搭建、PWM生成、同步整流实现);4)仿真结果分析(正向/反向工作验证、ZVS特性);5)工程实践建议(增益微调、代码生成与HIL测试)。通过手把手教学,帮助读者掌握950V↔48V双向LLC变换器的完整设计流程,实现高效率能量双向流动的同时保持软开关特性,适用于储能系统、车载充电等应用

MHD0815的博客 174

Python——类的继承

1.继承的实现 Python中继承语法格式如下: class 子类名(父类名): 类的属性 类的方法 例 7-11 类的继承示例,子类继承父类方法: #ex0711.py 类的继承示例,子类继承父类方法 class Animal: num = 0 def __init__(self): print("父类 Animal") def show(self): print("父类 Animal 成员方法") class Cat(Animal):

XQC_KKK的博客 2万+

把数据库事务边界握在手里:ABAP 里的 COMMIT CONNECTION 与 ROLLBACK CONNECTION 深度拆解

与表面是两条很短的语句,背后却牵动了连接管理、数据库 LUW、SAP LUW、隐式提交、游标生命周期、GTT 平台差异等一整片工程现实。把它们用对,你就能在不破坏主业务事务的前提下,实现跨库写入、审计落库、隔离型日志、数据集成落地等一系列“看似矛盾”的目标;用错了,它们也会悄无声息地制造一致性缺口,让问题在高峰期以 dump 或数据异常的方式爆出来。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1834

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python3--继承,多继承

一.继承(一)编写类时,并非总是要从空白开始。如果你要编写的类时另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获取另一个类的所有属性和方法;原有的类称为父类(基类),而新类称为子类(派生类)。子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法。继承的意义:重用代码,方便代码的管理和修改#类定义 class people: #定义基本属性 name =...

小菜鸟的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python中类的继承、多层继承和多继承

Python中类的继承、多层继承和多继承 Python中,一个类可以通过继承的方式来获得父类中的非私有属性和非私有方法。 一、继承、重写、和调用重写的父类方法 继承的语法为在类名后的小括号()中写入要继承的父类名,如果要继承多个类则中间用逗号分隔。 class Electrical(object): def __init__(self, name): self....

weixin_43790276的博客 7075

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python继承的理解

继承的概述 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”,继承的过程,就是从一般到特殊的过程。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多...

浪灬迹-红尘少年的博客 5919

Python-继承

python继承 单继承,多继承

aaaccc444的博客 5924

Python继承

继承 1.什么是继承 继承就是让类和类之间产生父子关系,子类可以拥有父类的静态属性和方法。继承就是可以获取另外一个类的静态属性或者普通方法,(并非所有成员)。 在Python中,新建的类可以继承一个或者多个父类,父类又可以称为基类或者超类,新建的类称为派生类或子类。 注意:python的继承分为:单继承和多继承 2.继承中子类和父类的概念 父类:用于被继承的类,称之为父类,又叫做基类或者超类。 子...

qq_44700820的博客 5859

python中类的继承

类的继承是面向对象编程中的重要概念,它允许一个类(子类)获取另一个类(父类)的属性和方法。通过继承,子类可以重用父类的代码,并且可以在此基础上添加自己的特定属性和方法,从而实现代码的复用和扩展。在类的继承中,父类通常包含一些通用的属性和方法,而子类可以继承这些通用的特性。子类可以通过继承获得父类的属性和方法,并且可以根据需要进行修改或扩展。这种机制使得代码更具有灵活性和可维护性。通过类的继承,我们可以建立类之间的层次关系,形成类的继承链。

2301_77444219的博客 5417

python继承,看这篇就够了

说到面向对象,大家都不陌生。在python中,一切皆对象,我们使用类来表示具有相同属性和方法的对象的集合。而继承则是一种创建新类的方式,这个新类可以使用被继承类的属性。今天就来说说python中的继承。

weixin_55154866的博客 2648

Python中多重继承

多重继承和方法解析顺序 python支持多继承的,下面看一个多继承的例子: class A: def ping(self): print('ping:',self) class B(A): def pong(self): print('pong:',self) class C(A): def pong(self): ...

一只菜鸟的博客 4260

Python Class 类的继承与多继承

Python Class 类的继承与多继承1、继承概念2、继承中的访问控制3、示例3.1 示例 13.2 示例 23.3 示例 33.4 示例 43.5 示例 53.6 示例 63.7 示例 73.8 示例 83.9 示例 94、多继承4.1 概念介绍4.2 多继承语法4.3 类装饰器4.4 `Mixin` 类4.5 `Mixin` 示例 1、继承概念 面向对象的三要素之一:继承 inheritance 在面向对象的世界中,从父类继承,就可以直接拥有父类的属性和方法,这样可以减少代码、多复用。子类可

weixin_44983653的博客 4191

python多继承

如果多个父类中有同名的方法,Python 将按照一定的顺序来决定哪个方法会被调用,这个顺序由 MRO(Method Resolution Order)来决定,Python 使用 C3 算法来计算多继承中的 MRO。MRO 算法的原则是尽可能地保持继承顺序不变,即先继承的类先被搜索,同级别的父类按照它们在类定义中出现的顺序被搜索。2.明确调用父类的方法。钻石继承指的是在一个继承关系中,某个类同时继承了两个或更多个父类,而这些父类又有一个共同的祖先类,因此在继承关系图中形成了一个钻石形状。

liulanba的博客 1万+

python中的继承冲突及继承顺序

本文介绍了python多继承中的继承冲突及python中解决继承顺序的Mro C3算法。

m0_56745306的博客 1775
上一篇: 必修-场景题
下一篇: 人纪 -- 针灸大成
徐寿春
博客等级 码龄8年 469粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值