推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
syahd
V2EX  ›  Python

Python 中除了 SimpleHTTPServer, json.tool 外,还有哪些内置的模块?

  •  1
     
  •   syahd · Feb 8, 2017 · 6404 views
    This topic created in 3557 days ago, the information mentioned may be changed or developed.

    昨天用了下 python -m json.tool ,贼爽。所以大家还知道 python 中还有哪些实用的内置模块吗?求告知

    Supplement 1  ·  Feb 8, 2017
    我问这个的目的,就是想了解 python 中内置的实用工具,免得需要工具的时候再去网上临时找。比如大家可以试试我推荐的 json.tool 。用法是 cat file.json | python -m json.tool 。然后就会输出格式化 json 字符串,这样格式化 json 字符串总比去网上找工具方便吧,还不依赖网络。

    还有啊,我希望的是可以直接运行的模块,不是包。
    Supplement 2  ·  Feb 10, 2017
    总结一下帖子里出现的:
    timeit:这个模块可以用来计算代码的执行时间。
    在 python3 的介绍: https://docs.python.org/3/library/timeit.html#module-timeit
    在 python2 的介绍: https://docs.python.org/2/library/timeit.html#module-timeit

    python -m smtpd -n -c DebuggingServer localhost:1025 一句话开启一个 SMTP 服务器测试邮件功能。(因为我不是很熟悉 smtp ,所以这个我就直接复制了,而且官方文档没有介绍)

    python -m pydoc 一个查看 python 文档的模块,就可以查到你安装的模块的使用方法。(官方文档没有介绍,但是执行一下就可以看到帮助)

    python -m zipapp (python3 专属) 没用过,介绍在 https://docs.python.org/3/library/zipapp.html#module-zipapp

    python -m zipfile 可以压缩解压缩 zip 文件的,但是无法解压带密码的 zip 。
    在 python3 的介绍: https://docs.python.org/3/library/zipfile.html#module-zipfile
    在 python2 的介绍: https://docs.python.org/2/library/zipfile.html#module-zipfile

    还有就是我自己写了个小爬虫,爬了下官方文档里哪些模块有 python -m 的方法,但是我看下了下,不是很实用,我就只贴下名字和地址好了,需要的时候大家自己查询。
    python2 模块的文档地址: https://docs.python.org/2/py-modindex.html
    python3 模块的文档地址: https://docs.python.org/3/py-modindex.html

    python2 可以的模块:
    compileall
    cProfile
    doctest
    ensurepip
    json
    pdb
    profile
    SimpleHTTPServer
    SimpleXMLRPCServer
    site
    test
    timeit
    trace
    unittest
    webbrowser
    zipfile

    python3 可用的模块:
    compileall
    json
    json.tool
    pickletools
    sysconfig
    tarfile
    test
    test.support
    timeit
    tokenize
    venv
    zipapp
    zipfile
    35 replies  •  2017-02-09 13:02:54 +08:00
    fearme
    fearme
    Feb 8, 2017 via iPhone
    1
    functools
    expkzb
    expkzb
    Feb 8, 2017
    2
    SimpleHTTPServer
    yangg
    yangg
    Feb 8, 2017❤️1
    3
    timeit
    python -m timeit '"-".join(str(n) for n in range(100))'
    syahd
    syahd
    OP
    Feb 8, 2017
    4
    @fearme
    @yangg
    我想要的是像 python -m SimpleHTTPServer/json.tool 这种可以直接运行的简易工具,不是导入的包啊
    syahd
    syahd
    OP
    Feb 8, 2017
    5
    @expkzb 这个我知道啊,还有别的吗
    est
    est
    Feb 8, 2017
    6
    py 所有模块都可以 -m 执行呀。
    est
    est
    Feb 8, 2017❤️1
    7
    一句话开启一个 SMTP 服务器测试邮件功能

    python -m smtpd -n -c DebuggingServer localhost:1025


    1025 端口可以自己换
    syahd
    syahd
    OP
    Feb 8, 2017
    8
    @est 我知道所有的模块用 m 参数都能执行啊,但是我问的是内置的已经封装好的小工具。比如推荐的 SMTP 服务器
    xiaket
    xiaket
    Feb 8, 2017❤️4
    9
    cd /usr/lib/python2.7/ && grep '^if\ __name__' --exclude-dir 'dist-packages' * -lR | wc -l

    117

    这么多,真指望有人一个一个介绍?

    另外,接触多了就知道,这种语法糖没什么特别的
    syahd
    syahd
    OP
    Feb 8, 2017
    10
    @xiaket 你这个运行出的结果是 python 内置包的数量吧,我要的不是这个,我要的是可以执行的小工具。
    Yinz
    Yinz
    Feb 8, 2017❤️2
    11
    @whwq2012 他 grep 的是含有 'if __name__' 语句的包,也就是可以直接执行的包 :)
    aristotll
    aristotll
    Feb 8, 2017
    12
    但是 -m 就是模块啊

    -m module-name Searches sys.path for the named module and runs the corresponding .py file as a script.

    你其实要自己写也可以写
    ivechan
    ivechan
    Feb 8, 2017
    13
    @whwq2012
    (以下是根据 Python3.6 文档所得)
    你还是直接看一下-m 的说明吧。
    When a package name is supplied instead of a normal module, the interpreter will execute <pkg>.__main__ as the main module.
    也就是说只要参数是 package 名,就会直接运行包里的__main__函数。

    不信你执行这个: python3 -m http.server
    也能得到同样的效果,根本不是什么小工具,只是 python 命令行支持这个参数而已。

    https://docs.python.org/3/using/cmdline.html?highlight=#cmdoption-m
    syahd
    syahd
    OP
    Feb 8, 2017 via Android
    14
    @Yinz 原来如此,我执行了这个命令下居然有 1700 多个
    syahd
    syahd
    OP
    Feb 8, 2017 via Android
    15
    @aristotll 就是想了解下实用的嘛,有些时候,小工具特别方便。而且我写不出,基础不到家😂
    @ivechan 我知道啊,发这个帖子就是想知道标准库里内置了哪些实用的模块
    qsnow6
    qsnow6
    Feb 8, 2017
    16
    别太懒了,官方文档自己翻
    syahd
    syahd
    OP
    Feb 8, 2017 via Android
    17
    @qsnow6 我用谷歌搜过,搜不到,请问该怎么搜,什么关键字
    syahd
    syahd
    OP
    Feb 8, 2017
    19
    @lhbc 对对对对,我要的就是这种,虽然看了下不是每个模块都是支持-m 参数,但还是谢谢啦
    blahgeek
    blahgeek
    Feb 8, 2017❤️2
    20
    来个有意思的… python -m turtle (我用 python 3)
    blahgeek
    blahgeek
    Feb 8, 2017❤️1
    21
    python -m antigravity
    syahd
    syahd
    OP
    Feb 8, 2017
    22
    @blahgeek 我 2.7 的可以运行
    TKKONE
    TKKONE
    PRO
    Feb 8, 2017
    23
    https://ooo.0o0.ooo/2017/02/08/589af1faf38d4.gif
    没有录完
    lynx
    lynx
    Feb 8, 2017
    24
    cd /usr/lib/python3.6

    grep 'if __name__ == .__main__.' ./*/__init__.py
    grep 'if __name__ == .__main__.' ./*.py
    syahd
    syahd
    OP
    Feb 8, 2017
    25
    @est 这个 smtpd 的模块的用法居然在官方文档里没有介绍
    jun4rui
    jun4rui
    Feb 8, 2017 via Android
    26
    现在还有 venv 了,以前的 virtualenv 可以不装了
    syahd
    syahd
    OP
    Feb 8, 2017
    27
    @jun4rui 这是 3 的特性里的吧, 2.7 里好像不能这么搞
    julyclyde
    julyclyde
    Feb 8, 2017❤️1
    28
    “既作为 lib 又作为 exe ”需要判断__name__
    所以以这个条件搜索
    est
    est
    Feb 8, 2017❤️1
    29
    python -m pydoc

    可以跑一个浏览器版本的 pydoc

    文档是实时从代码里生成的。如果你安装了其他包,可以实时把文档刷出来。
    PythonAnswer
    PythonAnswer
    Feb 8, 2017 via Android❤️1
    30
    python -m venv 常用
    python -m pip 这个在 win 下更新 pip 要用到
    PythonAnswer
    PythonAnswer
    Feb 8, 2017 via Android
    31
    @est 现在 jedi 这么普及,好多年都没人用 pydoc 啦,抄袭 java 的东西
    jun4rui
    jun4rui
    Feb 9, 2017 via Android
    32
    @whwq2012 好像是 3.5 以后? 2.7 肯定不行
    czheo
    czheo
    Feb 9, 2017❤️1
    33
    python -m zipapp
    可以用来打包程序
    ericls
    ericls
    Feb 9, 2017
    34
    python -m pip

    哈哈
    zhengxiaowai
    zhengxiaowai
    Feb 9, 2017❤️1
    35
    zipfile
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3031 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 110ms · UTC 04:40 · PVG 12:40 · LAX 20:40 · JFK 23:40
    ♥ Do have faith in what you're doing.