8个无需编写代码即可使用 Python 内置库的方法
发布于 2022-09-22 16:17:21 7950 举报 文章被收录于专栏:毛利学Python 近几年 Python 语言之所以流行,是因为我们可以使用它编写更少的代码来实现复杂的功能。Python 开发者社区非常欢迎那些封装了复杂实现但是对使用者十分友好的工具包。 然而,Python 的简便性不止如此。你能相信我们可以在不写任何代码的情况下使用 Python 吗?在接下来的文章中,我会介绍 8 个无需编写任何代码即可使用 Python 内置功能的例子。0. Python CLI “-m”参数
我们首先从 Python CLI(命令行界面)开始谈起。虽然我们不必编写代码来使用稍后介绍的功能,但是为了让 Python 知道我们要执行的内容,我们需要使用 Python 命令行来进行操作。 只要我们的电脑上安装了 Python 环境,我们就可以在 Python 命令行界面输入<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">python --help</font>
显示所有支持的参数。
<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">-m mod</font>
参数,它会将 Python 模块以脚本的形式运行。因此,如果该模块的实现支持命令行操作,我们就可以在命令行直接使用它。接下来就让我们体验一下:)
1. 服务端口测试
有时候,我们想测试 ip 端口的出站网络流量,通常 telnet 命令是一个不错的选择。在 Windows 平台上默认没有安装 telnet 软件,使用前需要手动安装。如果只是进行简单的测试,未来使用场景也不多,安装它可能是一种资源浪费。 但是,如果安装了 Python,那就不必下载安装 telnet,因为 Python 内置了 telnet 对应的模块。我们可以对 Google 搜索网站的 443 端口进行测试。代码语言:javascript
复制
python -m telnetlib -d 142.250.70.174 443
代码语言:javascript
复制
python -m telnetlib -d 142.250.70.174 999
2. 本地启动 web 服务
很多 Python 使用者不知道这一点,当第一次听说后会感到惊讶。是的,我们可以使用 Python 启动 web 服务,而无需编写任何代码,只需按如下方式在命令行执行如下命令。代码语言:javascript
复制
python -m http.server
3. 验证及格式化 JSON 字符串
如果你有一个非常长且未经格式化的 JSON 字符串,那么阅读起来会非常困难。通常,我会使用一些带有 JSON 插件的文本编辑器,比如 Sublime 或者 VS Code,来格式化 JSON 字符串。但是,如果手头没有这些工具,Python 可以临时一用。比如下面会以这个简短的 JSON 字符串进行展示。代码语言:javascript
复制
echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}'
<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">json.tool</font>
工具,JSON 字符串就会被很好的格式化。
代码语言:javascript
复制
echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}' | python -m json.tool
代码语言:javascript
复制
echo '{"name": {"first_name":"Chris", "last_name":"Tao"}, "age":33}' | python -m json.tool
4. 创建文本编辑器
你没看错,我们可以使用 Python 来”创建”一个文本编辑器。当然,它的功能非常有限,但是如果当前没有更好的选择,使用它会方便很多。另外,功能上肯定无法与 Vim 和 Nanos 相比,但是它完全是基于 UI 编辑器而不是命令行文本形式。这个编辑器由基于 Tkinter 实现的<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">idlelib</font>
模块创建,所以它是可以跨平台运行的。
假设我们要编写一个简单的 Python 程序来显示当前的时间,我想快速编写代码而不想下载和安装庞大的代码编辑工具。现在让我们运行下面这个命令。
代码语言:javascript
复制
如果文件目录不存在,
mkdir get_time_apppython -m idlelib get_time_app/print_time.py
<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">idlelib</font>
将无法创建,因此如果必要,我们需要创建一个。我们运行完这个命令之后,print_time.py 只有执行保存的情况下才会创建到本地。现在应该会弹出编辑器,我们可以在里面写一些代码, 可以看到代码是支持语法高亮的。
<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">ctrl+s</font>
快捷键对编辑好的代码进行保存,并关闭编辑窗口。接下来使用命令行查看一下编辑好的代码文件进行验证,没有任何问题。
代码语言:javascript
复制
cat get_time_app/print_time.py
5. 创建可执行应用程序
如果我们想要创建一个简单的应用,比如前面写的获取当前时间的应用程序,我们不必再需要像 PyInstaller 这样的第三方工具包,Python 内置的 Zipapp 就可以做到。假设我们要打包成一个”Get Time”的应用,我们可以在命令行运行下面的命令。代码语言:javascript
复制
在该命令中,我们只需要给
python -m zipapp get_time_app -m "print_time:main"
<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">zipapp</font>
设置<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">get_time_app</font>
名称,指定 Python 程序的入口文件及其程序入口函数即可。以<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">.pyz</font>
为扩展名的文件就是我们创建的应用程序,至此我们就可以将项目作为单个文件而不是文件夹进行分发。
代码语言:javascript
复制
python get_time_app.pyz
6. 编码和解码字符串或文件
通过 Python CLI,我们可以加密字符串或文件。我们以有趣的 ROT13 加密算法为例进行展示。ROT13 是一种偏移 13 位的凯撒密码,它的加密原理如下图所示。<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">encodings.rot_13</font>
来加密一个字符串,命令如下。
代码语言:javascript
复制
echo "I am Chris" | python -m encodings.rot_13
代码语言:javascript
复制
echo 'V nz Puevf' | python -m encodings.rot_13
代码语言:javascript
复制
echo "I am Chris" | python -m base64
<font style="color:rgb(10, 191, 91);background-color:rgb(243, 245, 249);">-d</font>
参数对加密字符串进行解码。
代码语言:javascript
复制
echo "SSBhbSBDaHJpcwo=" | python -m base64 -d
代码语言:javascript
复制
python -m base64 get_time_app/print_time.py
代码语言:javascript
复制
echo "ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCgpkZWYgbWFpbigpOgogICAgY3VycmVudF90aW1lID0gZGF0ZXRpbWUubm93KCkKICAgIHByaW50KGYnQ3VycmVudCB0aW1lIGlzIHtjdXJyZW50X3RpbWV9LicpCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQo=" | python -m base64 -d | python
7. 获取系统元数据
如果我们想获取当前的系统信息,Python 提供了一种非常简便的方法。我们只需要运行下面的命令即可。代码语言:javascript
复制
python -m sysconfig
代码语言:javascript
复制
python -m site
8. 文件压缩
我们可以使用 Python 来压缩文件,而无需下载 tar/zip/gzip 等工具。举个例子,如果我们想压缩我们刚刚在第 4 节中编写的应用程序,我们可以运行以下命令将文件夹压缩到 zip 文件中。在命令中,选项 -c 代表的是“create”即创建的含义。代码语言:javascript
复制
python -m zipfile -c get_time_app.zip get_time_app
代码语言:javascript
复制
如果不放心,我们可以检验一下。
python -m zipfile -e get_time_app.zip get_time_app_extracted
代码语言:javascript
复制
ls get_time_app_extractedcat get_time_app_extracted/get_time_app/print_time.py