Python标准库中有哪些好用的模块

简介: 在命令行中使用Python标准库模块,如`http.server`、`gzip`、`base64`、`json.tool`和`calendar`,可以直接通过`python -m module_name`调用,无需额外编写代码。例如,`python -m http.server`启动一个简单的HTTP服务器,`python -m gzip -d file.gz`解压缩文件。`json.tool`用于美化显示JSON数据,而`calendar`模块则能输出日历信息。这些在临时需要相关功能时特别方便。

在命令行中直接使用Python标准库的模块,最大的好处就是就是不用写代码,就能使用其中的功能,

当临时需要一些某些功能的时候,用这种方式会快捷,方便很多。

1. 命令行中使用模块

命令行中使用python标准库的模块,一般格式如下:

bash

复制代码

python -m <mod-name> <options>

其中,mod-name 是模块的名称;options 是模块的参数。

本篇列举的是我自己在命令行中常用的一些模块,并不是所有可在命令行中可用的模块。

其它好用的模块,欢迎大家推荐。

2. http.server:静态文件服务

http.server 模块的参数主要有:

bash

复制代码

python -m http.server -h

usage: server.py [-h] [--cgi] [-b ADDRESS] [-d DIRECTORY] [-p VERSION] [port]

positional arguments:
  port                  bind to this port (default: 8000)

options:
  -h, --help            show this help message and exit
  --cgi                 run as CGI server
  -b ADDRESS, --bind ADDRESS
                        bind to this address (default: all interfaces)
  -d DIRECTORY, --directory DIRECTORY
                        serve this directory (default: current directory)
  -p VERSION, --protocol VERSION
                        conform to this HTTP version (default: HTTP/1.0)

主要的参数:

  1. -b:如果需要让局域网的其他机器访问,可以设置 -b 0.0.0.0
  2. -d:设置静态文件服务的根目录

创建一个目录作为静态文件服务的根目录,并放入一个index.html文件。

html文件内容:

html

复制代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>http.server</title>
  </head>
  <body>
    <h1>hello</h1>
    <br />
    <h1>python -m http.server</h1>
  </body>
</html>

启动服务,效果如下:

bash

复制代码

python -m http.server -d ./sample-site

3. gzip:压缩/解压缩

gzip模块可用来压缩,解压缩文件。

bash

复制代码

python -m gzip -h

usage: gzip.py [-h] [--fast | --best | -d] [file ...]

A simple command line interface for the gzip module: act like gzip, but do not delete the input file.

positional arguments:
  file

options:
  -h, --help        show this help message and exit
  --fast            compress faster
  --best            compress better
  -d, --decompress  act like gunzip instead of gzip

压缩文件:

bash

复制代码

python -m gzip test.txt

# 会生成一个 test.txt.gz 文件

解压文件(-d 参数用来解压):

bash

复制代码

python -m gzip -d test.txt.gz

# 会解压出 test.txt 文件

4. base64:编码解码文件

当我们临时要用base64来编码或解码字符串的时候,可以用这个模块。

bash

复制代码

python -m base64 -h

usage: D:\miniconda3\envs\databook\Lib\base64.py [-h|-d|-e|-u|-t] [file|-]
        -h: print this help message and exit
        -d, -u: decode
        -e: encode (default)
        -t: encode and decode string 'Aladdin:open sesame'

base64编码一个字符串:

bash

复制代码

echo "abcdefg" | python -m base64

YWJjZGVmZw0K

解码base64字符串:用上面编码后的base64来还原。

bash

复制代码

echo "YWJjZGVmZw0K" | python -m base64 -d

abcdefg

5. json.tool:更好的显示json结构

这个工具对于经常使用命令行的人来说,非常有用。

从命令行访问某些API接口的时候,返回的json数据往往是压缩在一行,很难阅读。

json.tool模块的参数很多,但是一般大部分情况下是不需要设置的,

使用参数的默认值就可以了:

bash

复制代码

python -m json.tool -h
usage: python -m json.tool [-h] [--sort-keys] [--no-ensure-ascii] [--json-lines]
                           [--indent INDENT | --tab | --no-indent | --compact]
                           [infile] [outfile]

A simple command line interface for json module to validate and pretty-print JSON objects.

positional arguments:
  infile             a JSON file to be validated or pretty-printed
  outfile            write the output of infile to outfile

options:
  -h, --help         show this help message and exit
  --sort-keys        sort the output of dictionaries alphabetically by key
  --no-ensure-ascii  disable escaping of non-ASCII characters
  --json-lines       parse input using the JSON Lines format. Use with --no-indent or --compact to produce valid
                     JSON Lines output.
  --indent INDENT    separate items with newlines and use this number of spaces for indentation
  --tab              separate items with newlines and use tabs for indentation
  --no-indent        separate items with spaces rather than newlines
  --compact          suppress all whitespace separation (most compact)

比如下面的json字符串:

bash

复制代码

echo '{"code":0,"message":"success""data":[{"name":"harry"},{"name":"joe"}]}' | python -m json.tool

{
    "code": 0,
    "message": "success",
    "data": [
        {
            "name": "harry"
        },
        {
            "name": "joe"
        }
    ]
}

6. calendar:日历信息

calendar这个模块相当于是个命令行下的日历。

可以指定某一年的日历(默认是当前年的):

bash

复制代码

python -m calendar 2022

也可以指定某一某个的日历:

bash

复制代码

python -m calendar 2023 10

这个命令还可以把日历转换成HTML格式导出,具体可以看它的help信息

7. ast:显示代码的抽象语法数

这个ast模块就强大了,它可以将原始的python代码转换为抽象语法树

基于抽象语法树,可以做一些底层的代码分析,代码生成,甚至转换成其它语言的代码等等。

ast模块的参数不多,一般用默认参数即可:

bash

复制代码

python -m ast -h

usage: python -m ast [-h] [-m {exec,single,eval,func_type}] [--no-type-comments] [-a] [-i INDENT] [infile]

positional arguments:
  infile                the file to parse; defaults to stdin

options:
  -h, --help            show this help message and exit
  -m {exec,single,eval,func_type}, --mode {exec,single,eval,func_type}
                        specify what kind of code must be parsed
  --no-type-comments    don't add information about type comments
  -a, --include-attributes
                        include attributes such as line numbers and column offsets
  -i INDENT, --indent INDENT
                        indentation of nodes (number of spaces)

下面构造一个python代码文件(main.py),内容比较简单,就是一个累加的功能。

python

复制代码

# -*- coding: utf-8 -*-

def sum(start, end):
    sum = 0
    for i in range(start, end + 1):
        sum += i

    print("1+2+...+10 = {}".format(sum))


if __name__ == "__main__":
    sum(1, 10)

转换之后的抽象语法树为:

bash

复制代码

python -m ast main.py

Module(
   body=[
      FunctionDef(
         name='sum',
         args=arguments(
            posonlyargs=[],
            args=[
               arg(arg='start'),
               arg(arg='end')],
               ...省略...
         body=[
            Assign(
               targets=[
                  Name(id='sum', ctx=Store())],
               value=Constant(value=0)),
            For(
               target=Name(id='i', ctx=Store()),
               ...省略...
               orelse=[]),
            Expr(
               value=Call(
               ...省略...
                  keywords=[]))],
         decorator_list=[]),
      If(
         test=Compare(
               ...省略...
         orelse=[])],
   type_ignores=[])

转换后的内容比较长,中间我省略一些内容。

对完整的内容感兴趣,可以自己试试转换一个python代码文件。


转载来源:https://juejin.cn/post/7299346813262528512

相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
348 7
|
2月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
256 0
|
2月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
386 4
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
290 0
|
2月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
200 0
|
3月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
139 4
|
3月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
314 0
|
4月前
|
存储 安全 数据处理
Python 内置模块 collections 详解
`collections` 是 Python 内置模块,提供多种高效数据类型,如 `namedtuple`、`deque`、`Counter` 等,帮助开发者优化数据处理流程,提升代码可读性与性能,适用于复杂数据结构管理与高效操作场景。
352 0
|
5月前
|
数据安全/隐私保护 Python
抖音私信脚本app,协议私信群发工具,抖音python私信模块
这个实现包含三个主要模块:抖音私信核心功能类、辅助工具类和主程序入口。核心功能包括登录
|
8月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
362 14