If you write Python code regularly, you know that some tasks can be painfully repetitive.
Python has some incredibly powerful libraries that can save you hours (or even days) of work. The problem? Most people keep using the same mainstream ones—NumPy, Pandas, and Requests—without realizing there are hidden gems that can automate, optimize, and simplify a lot of tasks.
So here’s a list of 10 Python libraries that can help you get things done faster.
1. Rich – Stop Using Boring Print Statements
Rich is a game-changer for beautifully formatted console logs. It lets you print tables, syntax-highlighted code, markdown, and even progress bars. Perfect for debugging or making CLI tools visually appealing.
Time saved: No more ugly print debugging or manually formatting tables.
<span>from</span> <span>rich.console</span> <span>import</span> <span>Console</span><span>console</span> <span>=</span> <span>Console</span><span>()</span><span>console</span><span>.</span><span>print</span><span>(</span><span>"</span><span>Hello, [bold magenta]Rich![/bold magenta]</span><span>"</span><span>)</span><span>from</span> <span>rich.console</span> <span>import</span> <span>Console</span> <span>console</span> <span>=</span> <span>Console</span><span>()</span> <span>console</span><span>.</span><span>print</span><span>(</span><span>"</span><span>Hello, [bold magenta]Rich![/bold magenta]</span><span>"</span><span>)</span>from rich.console import Console console = Console() console.print("Hello, [bold magenta]Rich![/bold magenta]")
Enter fullscreen mode Exit fullscreen mode
2. Typer – Writing CLIs the Easy Way
If you’ve ever struggled with argparse, you’re going to love Typer. It’s based on FastAPI’s structure and makes it ridiculously easy to build command-line interfaces.
Time saved: No more manually parsing command-line arguments. Just type hint your functions and Typer does the rest.
<span>import</span> <span>typer</span><span>app</span> <span>=</span> <span>typer</span><span>.</span><span>Typer</span><span>()</span><span>@app.command</span><span>()</span><span>def</span> <span>hello</span><span>(</span><span>name</span><span>:</span> <span>str</span><span>):</span><span>print</span><span>(</span><span>f</span><span>"</span><span>Hello </span><span>{</span><span>name</span><span>}</span><span>"</span><span>)</span><span>app</span><span>()</span><span>import</span> <span>typer</span> <span>app</span> <span>=</span> <span>typer</span><span>.</span><span>Typer</span><span>()</span> <span>@app.command</span><span>()</span> <span>def</span> <span>hello</span><span>(</span><span>name</span><span>:</span> <span>str</span><span>):</span> <span>print</span><span>(</span><span>f</span><span>"</span><span>Hello </span><span>{</span><span>name</span><span>}</span><span>"</span><span>)</span> <span>app</span><span>()</span>import typer app = typer.Typer() @app.command() def hello(name: str): print(f"Hello {name}") app()
Enter fullscreen mode Exit fullscreen mode
3. Polars – A Faster Alternative to Pandas
If your Pandas operations feel slow, Polars is the upgrade you need. It’s a blazingly fast DataFrame library that can handle large datasets more efficiently.
Time saved: Significantly reduced processing time for big data.
<span>import</span> <span>polars</span> <span>as</span> <span>pl</span><span>df</span> <span>=</span> <span>pl</span><span>.</span><span>read_csv</span><span>(</span><span>"</span><span>data.csv</span><span>"</span><span>)</span><span>df</span><span>.</span><span>filter</span><span>(</span><span>pl</span><span>.</span><span>col</span><span>(</span><span>"</span><span>age</span><span>"</span><span>)</span> <span>></span> <span>30</span><span>)</span><span>import</span> <span>polars</span> <span>as</span> <span>pl</span> <span>df</span> <span>=</span> <span>pl</span><span>.</span><span>read_csv</span><span>(</span><span>"</span><span>data.csv</span><span>"</span><span>)</span> <span>df</span><span>.</span><span>filter</span><span>(</span><span>pl</span><span>.</span><span>col</span><span>(</span><span>"</span><span>age</span><span>"</span><span>)</span> <span>></span> <span>30</span><span>)</span>import polars as pl df = pl.read_csv("data.csv") df.filter(pl.col("age") > 30)
Enter fullscreen mode Exit fullscreen mode
4. FastAPI – The Modern Way to Build APIs
Django and Flask are great, but FastAPI is a whole different level. It’s fast, has built-in validation, and generates API docs automatically.
Time saved: Less boilerplate, automatic validation, and speedier performance.
<span>from</span> <span>fastapi</span> <span>import</span> <span>FastAPI</span><span>app</span> <span>=</span> <span>FastAPI</span><span>()</span><span>@app.get</span><span>(</span><span>"</span><span>/</span><span>"</span><span>)</span><span>def</span> <span>read_root</span><span>():</span><span>return</span> <span>{</span><span>"</span><span>message</span><span>"</span><span>:</span> <span>"</span><span>Hello, FastAPI!</span><span>"</span><span>}</span><span>from</span> <span>fastapi</span> <span>import</span> <span>FastAPI</span> <span>app</span> <span>=</span> <span>FastAPI</span><span>()</span> <span>@app.get</span><span>(</span><span>"</span><span>/</span><span>"</span><span>)</span> <span>def</span> <span>read_root</span><span>():</span> <span>return</span> <span>{</span><span>"</span><span>message</span><span>"</span><span>:</span> <span>"</span><span>Hello, FastAPI!</span><span>"</span><span>}</span>from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"message": "Hello, FastAPI!"}
Enter fullscreen mode Exit fullscreen mode
5. Pydantic – Stop Writing Manual Data Validation
If you hate writing manual validation logic, Pydantic is your best friend. It allows you to define data models with automatic validation using Python type hints.
Time saved: No need to write complex validation functions.
<span>from</span> <span>pydantic</span> <span>import</span> <span>BaseModel</span><span>class</span> <span>User</span><span>(</span><span>BaseModel</span><span>):</span><span>name</span><span>:</span> <span>str</span><span>age</span><span>:</span> <span>int</span><span>user</span> <span>=</span> <span>User</span><span>(</span><span>name</span><span>=</span><span>"</span><span>John</span><span>"</span><span>,</span> <span>age</span><span>=</span><span>"</span><span>25</span><span>"</span><span>)</span> <span># Raises validation error </span><span>from</span> <span>pydantic</span> <span>import</span> <span>BaseModel</span> <span>class</span> <span>User</span><span>(</span><span>BaseModel</span><span>):</span> <span>name</span><span>:</span> <span>str</span> <span>age</span><span>:</span> <span>int</span> <span>user</span> <span>=</span> <span>User</span><span>(</span><span>name</span><span>=</span><span>"</span><span>John</span><span>"</span><span>,</span> <span>age</span><span>=</span><span>"</span><span>25</span><span>"</span><span>)</span> <span># Raises validation error </span>from pydantic import BaseModel class User(BaseModel): name: str age: int user = User(name="John", age="25") # Raises validation error
Enter fullscreen mode Exit fullscreen mode
6. Loguru – Logging Made Ridiculously Simple
Python’s built-in logging module is powerful but overcomplicated. Loguru makes logging as easy as writing a print statement.
Time saved: No need to configure complex logging settings.
<span>from</span> <span>loguru</span> <span>import</span> <span>logger</span><span>logger</span><span>.</span><span>info</span><span>(</span><span>"</span><span>This is an info message</span><span>"</span><span>)</span><span>from</span> <span>loguru</span> <span>import</span> <span>logger</span> <span>logger</span><span>.</span><span>info</span><span>(</span><span>"</span><span>This is an info message</span><span>"</span><span>)</span>from loguru import logger logger.info("This is an info message")
Enter fullscreen mode Exit fullscreen mode
7. TQDM – Add Progress Bars with Zero Effort
If you work with loops that take time, TQDM is a must-have. It lets you add progress bars to your loops with a single line.
Time saved: Makes long-running loops visually trackable.
<span>from</span> <span>tqdm</span> <span>import</span> <span>tqdm</span><span>for</span> <span>i</span> <span>in</span> <span>tqdm</span><span>(</span><span>range</span><span>(</span><span>100</span><span>)):</span><span>pass</span> <span># Your logic here </span><span>from</span> <span>tqdm</span> <span>import</span> <span>tqdm</span> <span>for</span> <span>i</span> <span>in</span> <span>tqdm</span><span>(</span><span>range</span><span>(</span><span>100</span><span>)):</span> <span>pass</span> <span># Your logic here </span>from tqdm import tqdm for i in tqdm(range(100)): pass # Your logic here
Enter fullscreen mode Exit fullscreen mode
8. Shapely – Work with Geometric Objects Effortlessly
If you deal with geospatial data, Shapely makes working with geometric objects a breeze.
Time saved: No need to manually compute intersections, distances, or shapes.
<span>from</span> <span>shapely.geometry</span> <span>import</span> <span>Point</span><span>point</span> <span>=</span> <span>Point</span><span>(</span><span>1.0</span><span>,</span> <span>2.0</span><span>)</span><span>print</span><span>(</span><span>point</span><span>.</span><span>x</span><span>,</span> <span>point</span><span>.</span><span>y</span><span>)</span><span>from</span> <span>shapely.geometry</span> <span>import</span> <span>Point</span> <span>point</span> <span>=</span> <span>Point</span><span>(</span><span>1.0</span><span>,</span> <span>2.0</span><span>)</span> <span>print</span><span>(</span><span>point</span><span>.</span><span>x</span><span>,</span> <span>point</span><span>.</span><span>y</span><span>)</span>from shapely.geometry import Point point = Point(1.0, 2.0) print(point.x, point.y)
Enter fullscreen mode Exit fullscreen mode
9. Pytest – Write Better Tests, Faster
Forget about Python’s built-in unittest
. Pytest makes writing and running tests intuitive and efficient.
Time saved: Cleaner syntax, auto-discovery, and better debugging.
<span>def</span> <span>test_example</span><span>():</span><span>assert</span> <span>2</span> <span>+</span> <span>2</span> <span>==</span> <span>4</span><span>def</span> <span>test_example</span><span>():</span> <span>assert</span> <span>2</span> <span>+</span> <span>2</span> <span>==</span> <span>4</span>def test_example(): assert 2 + 2 == 4
Enter fullscreen mode Exit fullscreen mode
Run all tests with a single command:
pytestpytestpytest
Enter fullscreen mode Exit fullscreen mode
10. Playwright – Automate Browser Actions Like a Pro
For web scraping or automated testing, Playwright is a powerful alternative to Selenium.
Time saved: Faster execution, headless browsing, and better handling of modern web apps.
<span>from</span> <span>playwright.sync_api</span> <span>import</span> <span>sync_playwright</span><span>with</span> <span>sync_playwright</span><span>()</span> <span>as</span> <span>p</span><span>:</span><span>browser</span> <span>=</span> <span>p</span><span>.</span><span>chromium</span><span>.</span><span>launch</span><span>()</span><span>page</span> <span>=</span> <span>browser</span><span>.</span><span>new_page</span><span>()</span><span>page</span><span>.</span><span>goto</span><span>(</span><span>"</span><span>https://example.com</span><span>"</span><span>)</span><span>print</span><span>(</span><span>page</span><span>.</span><span>title</span><span>())</span><span>browser</span><span>.</span><span>close</span><span>()</span><span>from</span> <span>playwright.sync_api</span> <span>import</span> <span>sync_playwright</span> <span>with</span> <span>sync_playwright</span><span>()</span> <span>as</span> <span>p</span><span>:</span> <span>browser</span> <span>=</span> <span>p</span><span>.</span><span>chromium</span><span>.</span><span>launch</span><span>()</span> <span>page</span> <span>=</span> <span>browser</span><span>.</span><span>new_page</span><span>()</span> <span>page</span><span>.</span><span>goto</span><span>(</span><span>"</span><span>https://example.com</span><span>"</span><span>)</span> <span>print</span><span>(</span><span>page</span><span>.</span><span>title</span><span>())</span> <span>browser</span><span>.</span><span>close</span><span>()</span>from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page() page.goto("https://example.com") print(page.title()) browser.close()
Enter fullscreen mode Exit fullscreen mode
If you find yourself repeating certain tasks, look for a Python library that can automate or simplify it. Chances are, someone has already built the solution for you.
Which of these libraries have you used? Got any more time-saving Python gems? Drop them in the comments!
原文链接:Top 10 Python Libraries That Will Save You Hours of Work.
暂无评论内容