探索Python的8个无需编写代码的强大功能:从CLI到内置工具的全面指南
翻译:Wang Kunxiang @infoq

原始链接:Python()中的八个“无代码”功能
Python语言近年来流行的原因是因为我们可以使用它来编写更少的代码来实现复杂的功能。 Python开发人员社区欢迎那些非常友好地封装但对用户非常友好的工具包。
但是,Python的简单性不仅仅是这样。您能相信我们可以在不编写任何代码的情况下使用Python吗?在下一篇文章中,我将介绍8个可以使用Python构建的功能的示例,而无需编写任何代码。
0。python cli“ -m”参数
让我们从Python CLI(命令行接口)开始。尽管我们不必编写代码来使用稍后引入的功能,但要让Python知道要执行的内容,我们需要使用Python命令行进行操作。
只要我们的计算机与Python环境一起安装,我们可以输入Python -HELP以在Python命令行接口上显示所有支持参数。
由于命令输出的内容太长,因此仅显示内容的一部分。这里要强调的最重要的是-m mod参数,它将以脚本的形式运行Python模块。因此,如果模块支持命令行操作,我们可以直接在命令行中使用它。让我们接下来体验:)
1。服务端口测试
有时,我们想测试IP端口的网络流量。通常,telnet命令是一个不错的选择。 Windows平台上没有Telnet软件,您需要在使用前手动安装它。如果这只是一个简单的测试,将来的情况不多,并且可能浪费资源。
但是,如果安装了Python,则无需下载和安装Telnet,因为Python具有与Telnet相对应的模块。我们可以测试Google搜索网站的443端口。
python -m telnetlib -d 142.250.70.174 443
如上图所示,网络流量显示正常,我们甚至收到了Google空字符的回复。如果我们尝试访问IP的随机端口,它将丢弃错误,如下图所示。
python -m telnetlib -d 142.250.70.174 999
2。本地启动Web服务
许多Python用户不知道这一点,当他们第一次听到时,他们会感到惊讶。是的,我们可以使用Python在不编写任何代码的情况下启动Web服务,只需按照以下命令按照以下命令来遵循命令行。
python -m http.server
运行后,它表明服务监视着本地8000端口,然后我们可以尝试从浏览器:8000/。
Web服务将以根目录的形式显示在命令启动路径下的本地文件系统。换句话说,我们无法访问其父目录。
您可以问该功能的用途是什么。例如,如果您想与好合作伙伴共享以在计算机目录中共享许多文本/pdf/image文件/sub -directory文件,请使用此方法非常轻松地共享。
如果您想了解有关此主题的更多信息,则可以参考3行Python代码的文章来编写Web服务器。如果根据上述文章实现“低编码”解决方案,则可以向其添加更多自定义功能。
3。验证和格式输出JSON字符串
如果您的JSON字符串非常长,很难阅读。通常,我将使用一些带有JSON插件的文本编辑器(例如Sublime或VS代码)来格式化JSON字符串。但是,如果没有这些工具,则可以暂时使用Python。例如,此简短的JSON字符串将在下面显示。
echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}'
可以看出,当前操作系统的命令行工具只能以原始字符串的原始格式显示。但是,如果使用了python的JSON.Tool工具,则JSON字符串的格式将很好。
echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}' | python -m json.tool
哎呀! JSON字符串无效,JSON.Tool可以帮助我们解决问题。我们错过了名称对象背后的逗号。因此,添加逗号使JSON合法有效。
echo '{"name": {"first_name":"Chris", "last_name":"Tao"}, "age":33}' | python -m json.tool
现在,JSON字符串具有完美的凹痕输出!它更容易阅读。
4。创建文本编辑器
您可以正确阅读,我们可以使用Python创建文本编辑器。当然,它的功能非常有限,但是如果目前没有更好的选择,则使用更方便。另外,它不能与VIM和NANOS进行比较,但它完全基于UI编辑器,而不是命令行文本表单。该编辑器由IDLIB模块基于TKINTER创建,因此可以跨平台运行。
假设我们想编写一个简单的Python程序来显示当前时间。我想快速编写代码,而无需下载并安装巨大的代码编辑工具。让我们立即运行以下命令。
mkdir get_time_apppython -m idlelib get_time_app/print_time.py
如果不存在文件目录,则不会创建IDLELIB,因此,如有必要,我们需要创建一个。运行此命令后,只有在执行保存时,才能创建print_time.py。现在应该弹出编辑器。我们可以在其中编写一些代码,并且可以看到代码支持高语法。
现在,我们使用CTRL+S快捷键来保存编辑代码并关闭编辑窗口。接下来,使用命令行检查编辑的代码文件以进行验证,没有问题。
cat get_time_app/print_time.py
5。创建可执行应用程序
如果我们想创建一个简单的应用程序,例如较早获得当前时间的应用程序,我们不需要像Pyinstaller这样的第三个参与者工具包,python的python build -in zipapp可以做到。假设我们想将“获取时间”应用程序打包,我们可以在命令行中运行以下命令。
python -m zipapp get_time_app -m "print_time:main"
在此命令中,我们只需要为Zipapp设置GET_TIME_APP名称,并指定Python程序的入口文件及其程序输入功能。以.pyz为扩展名的文件是我们创建的应用程序。当时,我们可以将项目用作单个文件而不是文件夹。
该程序的启动方法也很简单,只需使用Python直接调用即可。
python get_time_app.pyz
6。代码和解码字符串或文件
通过Python CLI,我们可以对字符串或文件进行加密。我们以有趣的ROT13加密算法为例。 Rot13是13位凯撒密码。其加密原理如下图所示。
我们可以使用encodings.rot_13加密字符串,该命令如下。
echo "I am Chris" | python -m encodings.rot_13
请记住,不要将其用于任何真正的加密内容。因为有26个英文字母,我们可以在再次运行此算法后轻松地解密此加密的字符串:)
echo 'V nz Puevf' | python -m encodings.rot_13
现在,让我们尝试一个更常见的场景-based64编码。我们可以编码字符串,如下所示。
echo "I am Chris" | python -m base64
接下来,我们还可以使用-D参数来解码加密的字符串。
echo "SSBhbSBDaHJpcwo=" | python -m base64 -d
基本64通常用于图像文件的编码和解码。我们还可以如下制作文件。
python -m base64 get_time_app/print_time.py
有趣的是,可以立即执行解码Python脚本而不报告错误。本质
echo "ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCgpkZWYgbWFpbigpOgogICAgY3VycmVudF90aW1lID0gZGF0ZXRpbWUubm93KCkKICAgIHByaW50KGYnQ3VycmVudCB0aW1lIGlzIHtjdXJyZW50X3RpbWV9LicpCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQo=" | python -m base64 -d | python
7。获取系统元数据
如果我们想获取当前的系统信息,Python提供了一种非常简单的方法。我们只需要运行以下命令。
python -m sysconfig
可以看出,执行此命令后,将显示所有系统配置信息,例如Python环境路径和环境变量。上面的屏幕截图仅显示部分内容,实际内容将非常丰富。如果我们只想显示Python的环境路径和当前工作路径,我们可以执行以下命令。
python -m site
8。文件压缩
我们可以使用Python来压缩文件,而无需下载tar/zip/gzip和其他工具。例如,如果我们要压缩第4节中刚刚编译的应用程序,则可以运行以下命令将文件夹压缩到zip文件中。在命令中,选项-c表示“创建”的含义。
python -m zipfile -c get_time_app.zip get_time_app
当然,我们还可以解压缩压缩文件。此操作后,我们立即按下文件夹并将其放入新目录中,以免我们与原始目录发生冲突。在以下命令中,选项-E表示解压缩的含义。
python -m zipfile -e get_time_app.zip get_time_app_extracted
如果您不用担心,我们可以测试它。
ls get_time_app_extractedcat get_time_app_extracted/get_time_app/print_time.py
我们只是以zip文件为例。除了支持拉链格式的减压外,Python还支持焦油和GZIP减压。
总结
本文介绍了一种可以使用python build -in库中的方法,而无需编写任何代码。如果您可以在某些情况下想到这些方法,那么毫无疑问,它可以为我们提供很多便利。我希望这篇文章能够激发和帮助您。