Python标准库中隐藏的利器

这篇具有很好参考价值的文章主要介绍了Python标准库中隐藏的利器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python安装之后,其标准库中有的模块,不一定要通过代码来引用,还可以直接在命令行中使用的。

在命令行中直接使用Python标准库的模块,最大的好处就是就是不用写代码,就能使用其中的功能,
当临时需要一些某些功能的时候,用这种方式会快捷,方便很多。

1. 命令行中使用模块

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

python -m <mod-name> <options>

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

本篇列举的是我自己在命令行中常用的一些模块,并不是所有可在命令行中可用的模块。
其它好用的模块,欢迎大家推荐。

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

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

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文件内容:

<!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>

启动服务,效果如下:

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

Python标准库中隐藏的利器

3. gzip:压缩/解压缩

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

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

压缩文件:

python -m gzip test.txt

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

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

python -m gzip -d test.txt.gz

# 会解压出 test.txt 文件

4. base64:编码解码文件

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

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编码一个字符串:

echo "abcdefg" | python -m base64

YWJjZGVmZw0K

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

echo "YWJjZGVmZw0K" | python -m base64 -d

abcdefg

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

这个工具对于经常使用命令行的人来说,非常有用。
从命令行访问某些API接口的时候,返回的json数据往往是压缩在一行,很难阅读。

json.tool模块的参数很多,但是一般大部分情况下是不需要设置的,
使用参数的默认值就可以了:

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字符串:

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这个模块相当于是个命令行下的日历。
可以指定某一年的日历(默认是当前年的):

python -m calendar 2022

Python标准库中隐藏的利器

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

python -m calendar 2023 10

Python标准库中隐藏的利器

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

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

这个ast模块就强大了,它可以将原始的python代码转换为抽象语法树
基于抽象语法树,可以做一些底层的代码分析,代码生成,甚至转换成其它语言的代码等等。

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

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),内容比较简单,就是一个累加的功能。

# -*- 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)

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

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://www.toymoban.com/news/detail-746128.html

到了这里,关于Python标准库中隐藏的利器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安装完 Python 之后,如何设置 Python 环境变量

    人生苦短,我用 Python。最近有许多加群的萌新在咨询 Python 安装的事宜,Python 安装问题不大,可以戳这篇文章:本以为安装 Python 之后就可以万事大吉,高枕无忧了,往命令行中输入 python,发现有下图的错误。 1、首先确定已经安装好了 Python,并且要知道你的 Python 安装到哪

    2024年02月07日
    浏览(40)
  • Python科学计算利器:安装Scipy

    Python科学计算利器:安装Scipy Scipy是一个基于Python的开源科学计算库,它提供了许多高级数学函数、优化算法等工具,可以帮助用户快速进行各种数学运算和数据分析。本文将详细介绍如何在Python中安装Scipy。 安装Python 首先需要在电脑上安装Python。可以通过Python官网下载安装

    2024年02月12日
    浏览(41)
  • Java学数据结构(3)——树Tree & B树 & 红黑树 & Java标准库中的集合Set与映射Map & 使用多个映射Map的案例

    1.B树,阶M,数据树叶上,根的儿子数在2和M之间,除根外,非树叶节点儿子为M/2和M之间; 2.B树的插入引起分裂,B树的删除,引起合并和领养; 3.红黑树,根是黑的,红色节点的儿子必须是黑的,所有路径的黑色节点数相同; 4.红黑树的插入,颜色翻转,单旋转,插入节点定

    2024年02月11日
    浏览(79)
  • 【Python】解决 pip 开了网络代理之后无法安装包的问题

    开了网络代理之后,python 的 pip 就无法安装包了,报如下错误: 想必很多同学都和我一样,配置了 pip 源为国内的清华源或阿里源,这样下载包的速度会快,以清华源为例,配置方法如下: 然而,配置清华源之后,pip 安装的时候就是从清华的镜像仓库来抓取安装包,但是清

    2024年02月08日
    浏览(40)
  • 在 macOS Mojave 之后的每一个版本中都隐藏着比特币白皮书(Bitcoin Whitepaper)

    今天我在尝试解决打印机故障问题时,发现了 自2018年Mojave版本以来,macOS都附带了一份Satoshi Nakamoto(即中本聪)的比特币白皮书PDF副本[1] 。 我已经询问了十几位使用Mac的朋友,他们都确认macOS里面有这个文件。这个文件从 Mojave(10.14.0)到当前最新版本Ventura(13.3)的每一个

    2023年04月09日
    浏览(40)
  • Py的利器:Python库——dlib库的介绍、使用指南及安装

    Py的利器:Python库——dlib库的介绍、使用指南及安装 dlib库是一个适用于C++和Python的现代化机器学习、计算机视觉和图像处理工具包,它具有优雅和高效的编程接口。 本文将为大家介绍dlib库的特点、安装方法和使用指南,并为大家提供一些实用的示例代码来帮助大家更好地了

    2024年02月12日
    浏览(47)
  • 【Anaconda】jupyter notebook的升级版jupyter Lab4.0的安装配置,自学Python利器,你值得拥有!新工具你装了没?

    前几天,jupyter lab4.0已经发布,因为chatgpt的火爆,貌似都没太多人关注jupyter lab 新版本的发布这事了。 不过,如果你想自学Python,一定不要错过这个自学Python的利器。 我想每个Python程序员都会知道Jupyter Notebook 这个工具。 Jupyter Notebook 就像是一个神奇的“魔法记事本”,让你

    2024年02月12日
    浏览(71)
  • 在GitLab Python库中,mr.changes()和mr.diffs()的区别

    在GitLab Python库中, mr.changes() 和 mr.diffs() 都用于获取合并请求(Merge Request)中的文件更改信息,但它们之间有一些区别: mr.changes() : mr.changes() 方法返回合并请求中所有文件的更改信息。 返回的结果是一个字典,包含了每个文件更改的详细信息,如文件路径、diff(差异)等

    2024年03月10日
    浏览(35)
  • Python_Numpy库中各种矩阵基本运算(加、减、乘、点乘、点除、乘方、转置等)

    Numpy中矩阵基本运算的实现。 示例代码如下: 运行结果如下: 示例代码如下: 运行结果如下: 示例代码如下: 运行结果如下: 示例代码如下: 运行结果如下: 示例代码如下: 运行结果如下: 实现元素乘法有两种方法,一是用乘号,二是用函数multiply()。 下面的示例代码

    2024年01月25日
    浏览(36)
  • docker安装nginx之后无法访问

    今天安装完nginx 之后,容器可以正常启动,但是在Linux 与外面浏览器无法访问,但是进入容器内部,可以正常访问nginx 代码示例 查看容器内部ip地址 进入容器内部可以正常访问 解决方案: 查看是否关闭防火墙 查看是否有暴漏ip地址 有可能是linux 版本与docker 版本不兼容(此

    2024年02月13日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包