探索Python工具库合集:提高开发效率的秘密武器

news2025/4/20 9:53:58

在这里插入图片描述

前言🚀🚀

在开发过程中,笔者积累了许多实用的Python工具函数和模块,决定将它们整理成一个工具库集合,并与大家分享。本文将介绍笔者的Python工具库集合的核心功能和用途,

在日常的Python开发中,笔者经常遇到一些重复性任务和常见的问题。我开始将常用的Python工具函数记录下来,以简化这些任务并提供高复用的解决方案。随着时间的推移,我逐渐形成了一个有用的工具库集合( 当然,还不够完善!!!

逐渐地,这个工具库集合对我来说非常实用,它简化了我的工作流程,提供了高度复用的解决方案。笔者意识到,这些工具函数也可能对其他Python开发者有所帮助和启发。

遂在这里给读者做一下分享,希望这个工具库集合能为读者们提供一些便利和解决问题的思路。


工具库概述

这是一个 非常接地气的日常的Python工具库,如常见的 日期处理、打开JsonExcel文件、保存文件、图片处理、Windows窗口操作等等操作,它都有。

读者朋友们可以在我的GitHub项目中找到完整的源代码。链接:https://github.com/Frica01/python-utils

项目组织🐷🐷

目前工具库的各种工具如下所示,当然,我将继续维护和更新我的Python工具库集合,以提供更多功能和改进现有功能。

工具库的功能如下所示,基本上看文件 utils文件的名称,就可以知道该文件有什么功能。

python-utils/
├── utils/
│   ├── __init__.py
│   ├── config_utils.py
│   ├── date_utils.py
│   ├── docx_utils.py
│   ├── excel_utils.py
│   ├── file_utils.py
│   ├── html_utils.py
│   ├── json_utils.py
│   ├── network_utils.py
│   ├── os_utils.py
│   ├── pdf_utils.py
│   ├── photo_utils.py
│   ├── string_utils.py
│   ├── window_utils.py
│   └── more_utils.py
├── installer.py
├── main.py
├── LICENSE
├── README.md
└── requirements.txt

说明:

  • python-utils/ 是项目的根目录。

  • utils/ 是存放工具模块的目录。

  • __init__.py 是一个空文件,用于将 utils 目录标记为 Python 包。

  • 其他的 utils 模块文件包括了各种功能的工具函数。

  • installer.py 是自动安装模块,可以用于为工具自动安装依赖模块。

  • main.py 是项目的入口文件,可以用于演示和测试工具模块的功能。

  • LICENSE 是项目的许可证文件,用于声明代码的使用许可。

  • README.md 是项目的说明文件,可以在其中提供有关项目的详细信息、使用说明等。

  • requirements.txt 是项目的依赖文件,列出了项目所需的第三方库和版本信息。

部分代码展示

date日期工具 (date_utils.py)

这个模块包含了一些常用的日期和时间处理函数。它可以帮助你进行日期格式转换、日期计算、时区转换、获取日期区间等操作。无论是处理时间戳、解析日期字符串还是格式化日期输出,这个模块都能提供便捷的功能。

from datetime import datetime, timedelta


def get_date_range(start_date, end_date, date_format='%Y-%m-%d', is_string=False) -> list:
    """
    取日期范围
    """
    try:
        start_date = datetime.strptime(start_date, date_format)
        end_date = datetime.strptime(end_date, date_format)
    except ValueError as e:
        raise ValueError(f"Invalid date format: {e}")

    date_list = list()
    while start_date <= end_date:
        if is_string:
            date_list.append(start_date.strftime(date_format))
        else:
            date_list.append(start_date)
        start_date += timedelta(days=1)
    return date_list


def date_diff_days(start_date, end_date) -> int:
    """
    计算两个日期之间的差异
    """
    try:
        if isinstance(start_date, str):
            start_date = start_date.replace('/', '-')
            start_date = datetime.strptime(start_date, '%Y-%m-%d')
        if isinstance(end_date, str):
            end_date = end_date.replace('/', '-')
            end_date = datetime.strptime(end_date, '%Y-%m-%d')

        return (end_date - start_date).days
    except ValueError:
        raise ValueError(f"Invalid date format, input the YYYY-MM-DD")


def date_str_to_date(date_str: str, format_str='%Y-%m-%d') -> datetime:
    """
    将日期字符串转换为日期对象
    """
    try:
        return datetime.strptime(date_str, format_str)
    except ValueError:
        raise ValueError(f"Invalid date format, input the YYYY-MM-DD")

...

os文件工具 (os_utils.py)

这个模块包含了一些常用的文件操作函数。这个模块提供了一系列便利的文件操作函数。它可以帮助你读取和写入文件、复制和移动文件、创建和删除目录等。无论是处理文本文件、二进制文件还是目录操作,这个模块都提供了简单而强大的功能。(待更新

import os


def check_file_exists(path: str) -> bool:
    """
    检查文件是否存在
    """
    return os.path.exists(path=path)


def normalize_file_path(path: str) -> Union[str, bool]:
    """
    标准化文件路径
    """
    if not check_file_exists(path):
        return False
    return os.path.normpath(path=path)


def join_file_path(base_path: str, file_name: str) -> Union[str, bool]:
    """
    拼接文件路径
    """
    if not check_file_exists(base_path):
        return False
    return normalize_file_path(os.path.join(base_path, file_name))


...

功能展示 🙌🙌

生成PDF报告 (pdf_utils.py)

生成PDF报告是许多项目中常见的需求。我编写了pdf_utils.py模块,集成了PDF生成工具,并提供了简洁的接口来创建和编辑PDF文档,添加文本、图像和表格等内容。

示例代码:

from utils import pdf_utils

pdf = pdf_utils.PDFReport()
pdf.add_text("Hello, world!")
pdf.add_image("logo.png")
pdf.add_table(data)
pdf.save("report.pdf")

dict保存为json

  • 传入对应的Python的dict与保存的excel文件路径,就可以保存为excel文件啦。
from utils import dict_to_excel

    
if __name__ == "__main__":
    if __name__ == '__main__':
    dict_to_excel(
        data_dict={'name': ['张三', '李四', '王五'], 'age': [18, 19, 20]},
        file_path='./demo.xlsx'
    )

操作Windows窗口

  • 这份代码使用非常简单,只需要传入窗口的标题即可(例如窗口为 微信
  • 在做Python自动化时候,非常有用。
from utils import (
    minimize_window,
    maximize_window,
    set_top_window,
    close_window,
    hide_window,
    show_window
)


if __name__ == '__main__':
    # 最大化窗口
    minimize_window(title='微信')
    # 最小化窗口
    maximize_window(title='微信')
    # 置顶窗口
    set_top_window(title='微信')
    # 关闭窗口
    close_window(title='微信')
    # 隐藏窗口
    hide_window(title='微信')
    # 显示窗口
    show_window(title='微信')

更新和未来计划 ✨✨

读者朋友们可以在我的GitHub项目中找到完整的源代码。链接:https://github.com/Frica01/python-utils

我将继续维护和更新我的Python工具库集合,以提供更多功能和改进现有功能。

同时,笔者计划添加更多的示例代码和文档(准备ing),帮助开发者更好地理解和使用这些工具。

并且鼓励读者们也加入其中,分享你们的工具函数或对现有函数的改进。通过集体的努力和贡献,我们可以共同成长,共享知识,让这个工具库集合变得更加强大和有用。

使用建议 🐓🐓

基本上,代码的注释写的都很清楚了。使用上看建议就足矣。

为了更好地使用笔者的Python工具库集合,我提供以下使用建议:

  • 在使用工具库之前,阅读相应的文档和示例代码,以了解函数和模块的用法;
  • 及时更新工具库,以获取最新的功能和修复已知的问题;
  • 如果您有任何问题、建议或发现了bug,欢迎随时联系笔者或提交 Issues。

后话

本次分享到此结束,

see you~~🐱‍🏍🐱‍🏍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Selenium Python教程第6章:使用页面对象

6. Page Objects 页面对象 6.1 什么是页面对象模型(POM)&#xff1f; 页面对象模型(Page Objects Model, POM )是一组旨在表示一个或多个网页的类, 用1个类来保存1个网页上所有的元素&#xff0c;相似的网页可以重用此类。 1个网站通常有多个页面&#xff0c;可以用多个页面类…

(opencv)图像几何变换——缩放

图像缩放是指将图像的尺寸变小或变大的过程&#xff0c;也就是减少或增加源图像数据的像素个数。图像缩放一定程度上会造成信息的丢失&#xff0c;因此需要考虑适宜的方法进行操作。 下面介绍两种常用的图像缩放方法的原理及实现 1.基于等间隔提取图像缩放 等间隔提取图像缩…

多线程目录

基础概念篇 001线程状态图示_存在,及合理的博客-CSDN博客例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。提示&#xff1a;以下是本篇文章正文内容&…

机器学习 day16(前向传播算法,Tensorflow的实现代码)

1. 手写数字识别的神经网络模型 为简单起见&#xff0c;仅区分手写0和1&#xff0c;并用8*8的像素矩阵&#xff0c;共有64个像素&#xff08;特征&#xff09;&#xff0c;展开写成向量x&#xff0c;即该神经网络模型的输入特征向量x的维数为64&#xff0c;设该模型有两层隐藏…

一文打通:从字节码指令的角度解读前置后置自增自减(加加++减减--)

文章目录 1.前置了解的知识1.1 栈这种数据结构1.2 局部变量表和操作数栈1.3 三个字节码指令 2.单独使用后置与前置2.1 后置字节码指令2.2 前置字节码指令2.3 总结 3.需要返回值的情况下使用后置与前置3.1 后置字节码指令3.2 前置字节码指令3.3 总结3.4 练习&#x1f340; 练习一…

npm i安装依赖包报错proxy‘ config is set properly. See: ‘npm help config‘

npm i 报错proxy‘ config is set properly. See: ‘npm help config‘ 网上搜了解决方法&#xff1a; https://blog.csdn.net/zz00008888/article/details/127852233 但是执行完还是报错&#xff0c;查代理已经是false了 看到是cnpm镜像&#xff0c;于是用cnpm i 就运行成功…

设计模式篇---原型模式

文章目录 概念Java中的克隆方法实例使用场景 概念 定义&#xff1a;使用原型实例指定待创建对象的类型&#xff0c;并通过复制这个原型来创建新的对象。 原型模式主要有以下几部分组成&#xff1a; Prototype(抽象原型类):具体原型类的接口或者抽象类。 ConcretePrototype(具体…

Mybatis 全系列目录引导(持续更新)

基础篇 001Mybatis常用的网站及工具_存在,及合理的博客-CSDN博客GITHUB。https://blog.csdn.net/qq_26594041/article/details/131098123002Mybatis初始化引入_存在,及合理的博客-CSDN博客自动检测工程中的DataSource创建并注册SqlSessionFactory实例创建并注册SqlSessionTemp…

OpenGL光照之颜色

文章目录 创建一个光照场景 现实世界中有无数种颜色&#xff0c;每一个物体都有它们自己的颜色。我们需要使用&#xff08;有限的&#xff09;数值来模拟真实世界中&#xff08;无限&#xff09;的颜色&#xff0c;所以并不是所有现实世界中的颜色都可以用数值来表示的。然而我…

物联网Lora模块从入门到精通(四)对某些端口的初始化

一、前言 由于程序设计开发具有的不确定性&#xff0c;我们常常需要初始化某些特定的引脚&#xff0c;并读取引脚电平状态或向引脚输出高低电平。 二、代码实现 快速找到端口的初始化语句&#xff1a; 首先&#xff0c;找到board.c文件&#xff0c;在下图的位置&#xff0c;我…

【算法系列专栏介绍】

序言 你只管努力&#xff0c;其他交给时间&#xff0c;时间会证明一切。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 决定开一个算法专栏&#xff0c;希望能帮助大…

什么是域控服务器?域控服务器功能?部署域控需要考虑因素?域控组策略功能?

一、什么是域控制服务器&#xff1f; 域控制器&#xff08;Domain Controller&#xff09;是在Windows Server操作系统上运行的一个服务角色&#xff0c;它用于管理和控制一个或多个计算机的安全策略、用户身份验证和授权等任务。域控制器通常是用于企业网络中的主要身份验证和…

性能测试从0到1实战,超详细性能测试计划编写汇总...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、测试背景 首先…

yt-dlp 使用教程

参考&#xff1a;yt-dlp 使用教程 下载yt-dlp.exe&#xff0c;地址&#xff1a;Releases yt-dlp/yt-dlp GitHub windows下载.exe版本&#xff0c;放到指定路径下&#xff0c;我的是C:\Users\bellychang\Downloads 查看视频所有分辨率 yt-dlp.exe --proxy socks5://127.0.0.…

github action 基于个人项目实践

前言: DevOps 和 Jenkins 作为一名开发&#xff0c;虽然也没有经常听到 Devops &#xff08;研发和运维一体化&#xff09;这个概念&#xff0c;但日常工作中已经无处不在地用着 DevOps 工具。自研也好&#xff0c;基于开源项目改造也好&#xff0c;互联网公司基本都会有自已的…

强化学习Q-learning实践

1. 引言 前篇文章介绍了强化学习系统红的基本概念和重要组成部分&#xff0c;并解释了Q-learning算法相关的理论知识。本文的目标是在Python3中实现该算法&#xff0c;并将其应用于实际的实验中。 闲话少说&#xff0c;我们直接开始吧&#xff01; 2. Taxi-v3 Env 为了使本文…

一文讲完Java常用设计模式(23种)

介绍 设计模式的起源可以追溯到20世纪80年代&#xff0c;当时面向对象编程开始流行。在这个时期&#xff0c;一些软件开发者开始注意到他们在不同的项目中遇到了相同的问题&#xff0c;并且他们开始寻找可重用的解决方案。这些解决方案被称为设计模式。最早提出设计模式的人是…

centos7的docker安装与简单介绍

docker的基本组成&#xff08;三要素&#xff09; 镜像容器仓库 理解&#xff1a;镜像可以理解成一个类&#xff0c;容器就是用这个类new出来的对象&#xff0c;仓库就是放镜像文件的。docker本身是容器运行载体或管理引擎 安装 安装gcc yum -y install gcc安装需要的软件…

Vcpkg介绍及使用

Vcpkg用于在Windows、Linux、Mac上管理C和C库&#xff0c;极大简化了第三方库的安装&#xff0c;它由微软开源&#xff0c;源码地址&#xff1a;https://github.com/Microsoft/vcpkg&#xff0c;最新发布版本为2023.04.15 Release&#xff0c;它的license为MIT。 在windows上安…

[解决方案]springboot怎么接受encode后的参数(参数通过=拼接)

springboot怎么接受encode后的参数(拼接& springboot怎么接受encode后的参数(拼接&)问题出现原因发送encode后的值在postman里面的情况这个时候该如何接受呢&#xff08;encode后的值接受&#xff09;controller层的代码用到的工具类CRequest springboot怎么接受encode…