首页
开发技巧正文内容

12 个知道的人不多但非常有用的 Python 库

2024年09月23日
阅读时长 4 分钟
阅读量 8
12 个知道的人不多但非常有用的 Python 库

Python 是一种多才多艺的语言,以其简单性、可读性和庞大的库生态系统而闻名。虽然许多开发人员熟悉流行的库,如 NumPypandasrequestsFlask,但还有许多鲜为人知的库可以提高你的生产力,帮助你更高效地解决特定问题。

这些库经常被流行库的阴影掩盖,但它们提供独特的功能,可以简化任务、优化工作流程,并为你的项目带来创新。

Python 有许多非常有用但不为人所知或使用广泛的库。这些库可用于自动化重复任务、更有效地处理数据,并使用更少的代码构建健壮的应用程序。

在本文中,我们将涵盖各种库,涉及不同领域,如文件处理、数据处理和 Web 开发,可以使您的开发过程更顺畅、更高效。让我们开始吧!


0. WeasyPrint - 将 HTML 和 CSS 转换为 PDF

WeasyPrint 是一个简单而优雅的库,允许您从 HTML 和 CSS 生成 PDF。与其他 PDF 库不同,它支持复杂的布局并使用熟悉的 Web 技术。

示例:

# WeasyPrint - 将 HTML 和 CSS 转换为 PDF

from weasyprint import HTML

html_content = """<h1>Hello, World!</h1><p>This is a PDF generated 
from HTML and CSS.</p>"""

HTML(string=html_content).write_pdf("output.pdf")

这个库可用于需要动态生成发票和报告的 Web 应用程序。


1. Pyexcel - 简化的 Excel 数据处理

Pyexcel 是一个轻量级库,允许我们以最少的代码读取、写入和操作各种格式的 Excel 文件(例如 .xls、.xlsx、.ods)。

示例:

# Pyexcel - 简化的 Excel 数据处理

import pyexcel as p

data = p.get_array(file_name="example.xlsx")

print(data)

当我们需要在项目中处理多种 Excel 格式时,可以使用这个库。


2. Pendulum - 简化的日期/时间处理

Pendulum 是 Python 的 datetime 库的替代品。它提供了一个更直观、更简单的 API,用于处理日期和时间,包括时区支持、解析、格式化和日期运算。

示例:

# Pendulum - 简化的日期/时间处理

import pendulum

now = pendulum.now('UTC')

print(now.to_datetime_string())  

# 输出: 
2024-04-09 14:32:10

这个库简化了许多复杂的日期操作,这些操作在标准的 datetime 库中将会很繁琐。它还可以自动处理像夏令时更改这样的棘手部分。


3. Tenacity - Python 的重试库

Tenacity 是一个通用重试库,简化了对不可靠函数(如网络请求或数据库连接)的重试逻辑。

示例:

# Tenacity - Python 的重试库

from tenacity import retry, stop_after_attempt

@retry(stop=stop_after_attempt(3))
def unreliable_function():
    print("Attempting to execute...")
    raise Exception("Failed")

unreliable_function()

这个库可用于优雅地处理偶尔出现的网络错误。

我们可以简单地装饰函数,让库处理重试,而不是手动编写重试逻辑,从而减少代码复杂性,提高可靠性。


4. Dataset - 简化的数据库交互

Dataset 是一个数据库抽象层,允许我们使用 Pythonic 语法与 SQL 数据库交互。它非常适合快速原型设计支持数据库的应用程序,而无需编写 SQL。

示例:

# Dataset - 简化的数据库交互

import dataset

db = dataset.connect('sqlite:///mydatabase.db')

db['users'].insert(dict(name='John Doe', age=30))

这个库可用于处理数据库交互,而无需担心复杂的 ORM 配置。它使我们可以专注于应用程序逻辑,而不是数据库管理。


5. Poetry - 依赖管理和打包

Poetry 是一个依赖管理和打包工具,简化了 Python 项目管理。它可以处理依赖关系、构建和发布到 PyPI,所有这些都可以通过一个简单的配置文件完成。

示例:

# Poetry - 依赖管理和打包

poetry new my_project

poetry add pendulum
poetry add requests

这个库可以简化设置虚拟环境、管理依赖关系和打包项目的过程,可以取代 pippipenvsetup.py 等工具,提供一个统一的解决方案。


6. Dask - 任务调度的并行计算

Dask 是一个灵活的并行计算库,可以与现有的 Python 代码集成。

虽然 Pandas 在数据操作方面表现出色,但在处理大型数据集时会遇到困难。这就是 Dask 的用武之地。Dask 实现了并行计算,使得处理大数据更加容易。

示例:

# Dask - 任务调度的并行计算

import dask.dataframe as dd

# 读取大型数据集
df = dd.read_csv('large_dataset.csv')

# 并行执行分组操作
result = df.groupby('category').sum().compute()

print(result)

这个库可用于处理数据集太大无法放入内存的情况。

它允许我们将任务分解为更小、可管理的块,以便并行处理,显著减少总体处理时间。


7. Faker - 生成用于测试的虚假数据

Faker 是一个帮助我们生成虚假数据的库,例如姓名、地址、电子邮件、电话号码等。它对于测试、数据生成和填充数据库非常有用。

示例:

#Faker - 生成用于测试的虚假数据

from faker import Faker

fake = Faker()

print(fake.name())  # 输出一个随机姓名
print(fake.address())  # 输出一个随机地址

当我们需要一个大型数据集来测试应用程序的性能时,可以使用这个库。

这个库允许我们快速生成看起来真实的数据,无需任何努力,从而实现更有效的负载测试和开发。


8. FlashText - 快速关键字搜索和替换

FlashText 是一个用于快速关键字搜索和替换的库。与使用正则表达式进行基于关键字的搜索操作相比,它更高效。

示例:

# FlashText - 快速关键字搜索和替换

from flashtext import KeywordProcessor

keyword_processor = KeywordProcessor()
keyword_processor.add_keyword('JavaScript', 'JS')

text = "JavaScript is a popular programming language."

print(keyword_processor.replace_keywords(text))  

# 输出: 
JS is a popular programming language.

在大型数据集上执行关键字替换时,这个库比正则表达式快得多。在需要跨数百万条记录替换多个关键字的情况下,它特别有用。


9. PyPDF2 - 操纵 PDF 文件

PyPDF2 是一个让我们处理 PDF 文件的库,包括合并、拆分、旋转和从 PDF 中提取文本。它非常适合在自动化工作流中处理 PDF 文档。

示例:

# PyPDF2 - 操纵 PDF 文件

from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader('input.pdf')

writer = PdfWriter()

for page in reader.pages:
    writer.add_page(page)

with open('output.pdf', 'wb') as f:
    writer.write(f)

这个库可用于自动合并多个 PDF 文档为单个文件。


10. Humanize - 将数据转换为人类友好的格式

Humanize 是一个 Python 库,提供将数据转换为人类可读格式的实用工具,例如将数字转换为单词、日期转换为模糊时间等。

示例:

# Humanize - 将数据转换为人类友好的格式

import humanize

print(humanize.naturalsize(1024))  
# 输出: '1.0 kB'

print(humanize.intword(1234567890))  
# 输出: '12 亿'

这个库在报告工具中特别有用,其中数据必须以更用户友好的方式呈现,使输出对非技术利益相关者更易理解。


11. Memory-Profiler - 监控 Python 代码的内存使用

Memory-Profiler 是一个用于逐行监控 Python 程序内存使用的模块。它特别适用于识别内存泄漏或优化 Python 应用程序的内存使用。

示例:

# Memory-Profiler - 监控 Python 代码的内存使用

from memory_profiler import profile

@profile
def my_func():
    a = [1] * (10 ** 6)
    b = [2] * (2 * 10 ** 7)
    del b
    return a

my_func()


# 输出:
行号    内存使用    增量  出现次数   行内容
============================================================
     3   38.816 MiB   38.816 MiB           1   @profile
     4                                         def my_func():
     5   46.492 MiB    7.676 MiB           1       a = [1] * (10 ** 6)
     6  199.117 MiB  152.625 MiB           1       b = [2] * (2 * 10 ** 7)
     7   46.629 MiB -152.488 MiB           1       del b
     8   46.629 MiB    0.000 MiB           1       return a

这个库可用于优化可能由于数据结构不当而消耗过多内存的 Python 脚本。这可以帮助我们识别瓶颈并减少应用程序的内存占用。


结论

Python庞大的生态系统中充满了可以显著增强您开发体验的库,即使它们不像主要的库那样广为人知。

不要犹豫,赶紧用起来,因为它们可能正是您甚至不知道自己有的问题的解决方案。将这些工具添加到您的Python工具库中将使您成为一个更多才多艺、高效的开发者。

免责声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

相关文章

探索多种软件架构模式及其实用应用
2024年11月22日19:06
本文深入探讨了多种软件架构模式,包括有界上下文、边车模式、发布-订阅模式、应用网关、微服务、命令职责分离(CQRS)等,介绍了它们的优点、使用场景以及具体应用实例。文章强调根据具体项目需求和团队能力选择最合适的架构,以构建高效和可维护的解决方案,同时展示了各架构模式间的综合应用,提供了丰富的案例和技术细节。
15个高级Python快捷键助您更快编程
2024年11月21日07:02
本文分享了 15 个高级的 Python 编程快捷键,包括上下文管理器、行内字典合并、函数参数解包、链式比较、dataclasses、海象运算符、反转列表、备忘录缓存、splitlines、enumerate、字典推导、zip 用于并行迭代、itertools.chain 扁平化列表、functools.partial 部分函数和 os.path 文件路径管理等,帮助开发者提高编程效率和代码简洁性。
揭示网页开发的 11 个迷思:停止相信这些误区
2024年11月19日22:05
网页开发充满误解,这篇博文针对11个常见迷思进行揭秘。包括网站开发后不需更新、需掌握所有技术、AI会取代开发者等。强调持续学习、专业化、用户体验的重要性,澄清误区如多任务处理的必要性和最新技术的必需性。文章提醒开发者注重实用而非追求完美代码,以务实态度面对开发工作。
你知道 CSS 的四种 Focus 样式吗?
2024年11月18日21:41
本文介绍了四种 CSS focus 样式::focus、:focus-visible、:focus-within 以及自定义的 :focus-visible-within,帮助提升网站用户体验。:focus 样式应用于被选中元素;:focus-visible 仅在键盘导航时显示;:focus-within 用于父元素;自定义 :focus-visible-within 结合两者效果。合理运用这些样式能使网站更方便键盘用户导航。
利用 Python 实现自动化图像裁剪:简单高效的工作流程
2024年11月11日20:49
使用 Python 和 OpenCV 自动裁剪图像,轻松实现 16:9 的完美构图。这个指南介绍了如何通过代码进行灰度化、模糊处理和边缘检测,最终识别出最重要的部分进行裁剪。特别适合需要批量处理图像的情况,节省大量时间。
每位资深前端开发人员都应了解的 TypeScript 高级概念
2024年11月11日02:07
资深前端开发者应了解 TypeScript 的高级概念,如联合类型、交叉类型、类型保护、条件类型、映射类型、模板字面量类型和递归类型。这些特性可提升代码的可维护性和可扩展性,确保在开发复杂应用时实现更高的类型安全性和效率。