当前位置: 首页 > 科技观察

Python八个实用的“无代码”特性

时间:2023-03-12 04:53:14 科技观察

Python语言之所以在近几年大行其道,是因为我们可以用它写更少的代码来实现复杂的功能。Python开发人员社区欢迎封装复杂实现但对用户友好的工具包。然而,Python的简单性并不止于此。你能相信我们可以不用写任何代码就可以使用Python吗?在下一篇文章中,我将介绍8个无需编写任何代码即可使用Python内置函数的示例。PythonCLI“-m”参数让我们从PythonCLI(命令行界面)开始。虽然我们不必编写代码来使用后面描述的功能,但为了让Python知道我们要执行什么,我们需要使用Python命令行来执行。只要我们的电脑上安装了Python环境,我们就可以在Python命令行界面输入python--help来显示所有支持的参数。由于命令输出内容过长,上图只展示了部分内容。这里最需要强调的是-mmod参数,它将Python模块作为脚本运行。因此,如果模块的实现支持命令行操作,我们可以直接在命令行中使用。接下来我们来体验一下:1.服务端口测试有时候,我们想要测试ip端口的出网流量,通常telnet命令是一个不错的选择。Windows平台默认不安装telnet软件,使用前需要手动安装。如果只是为了简单的测试,未来的使用场景不多,安装它可能是一种资源浪费。但是如果安装了Python,则不需要下载安装telnet,因为Python内置了对应telnet的模块。我们可以测试google搜索网站的443端口:python-mtelnetlib-d142.250.70.174443如上图,网络流量正常,甚至收到了一个空字符的google响应。如果我们尝试访问一个随机端口的ip,就会报错,如下图:python-mtelnetlib-d142.250.70.1749992很多Python用户第一次听的时候不知道这个你会当你说出来时感到惊讶。是的,我们不用写任何代码就可以使用Python来启动web服务,只需要在命令行中执行如下命令即可:python-mhttp.server运行后显示服务监听本地8000端口,然后,我们可以尝试从浏览器访问http://localhost:8000/。Web服务会将命令启动路径下的本地文件系统显示为根目录,换句话说,我们无法访问其父目录。你可能会问,这个函数的使用场景是什么。举个例子,如果你想和你的好朋友分享你电脑某个目录下的很多文本/PDF/图片文件/子目录文件,那么使用这种方法可以非常方便地进行分享。3.验证和格式化JSON字符串如果你有一个很长的未格式化的JSON字符串,它可能很难阅读。通常,我会使用一些带有JSON插件的文本编辑器,例如Sublime或VSCode,来格式化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-mjson.tool糟糕!JSON字符串不合法,json.tool帮助我们定位问题。我们在名称对象后遗漏了一个逗号。所以添加逗号使这个JSON合法:echo'{"name":{"first_name":"Chris","last_name":"Tao"},"age":33}'|python-mjson.tool现在,JSON字符串具有完美缩进的格式化输出!更容易阅读。4.创建一个文本编辑器你没有看错,我们可以使用Python来“创建”一个文本编辑器。诚然,它的功能非常有限,但如果现在没有更好的选择,它使用起来会方便得多。另外,功能上肯定比不上Vim和Nanos,但它完全基于UI编辑器而不是命令行文本形式。本编辑器由基于Tkinter实现的idlelib模块创建,可以跨平台运行。假设我们要写一个简单的Python程序来显示当前时间,我想快速编写代码而不需要下载和安装庞大的代码编辑工具。现在让我们运行这个命令:mkdirget_time_apppython-midlelibget_time_app/print_time.py如果文件目录不存在,idlelib将不会创建,所以如果需要我们需要创建一个。我们运行这条命令后,print_time.py只有在保存的情况下才会在本地创建。现在应该会弹出编辑器,我们可以在里面写一些代码,可以看到代码支持语法高亮。现在我们使用ctrl+s快捷键保存编辑好的代码并关闭编辑窗口。接下来使用命令行查看编辑好的代码文件,确认没有问题:catget_time_app/print_time.py5。创建一个可执行的应用程序如果我们要创建一个简单的应用程序,比如前面写的获取当前时间程序的应用程序,我们不再需要像PyInstaller这样的第三方工具包,Python内置的Zipapp就可以做到。假设我们要打包成一个“GetTime”应用,我们可以在命令行运行如下命令:python-mzipappget_time_app-m"print_time:main"在这个命令中,我们只需要为zipapp设置get_time_app名称,指定Python程序的入口文件及其程序入口函数即可。扩展名为.pyz的文件是我们创建的应用程序,因此我们可以将项目作为单个文件而不是文件夹分发。启动程序的方式也很简单,直接用Python调用即可:pythonget_time_app.pyz6。对字符串或文件进行编码和解码通过PythonCLI,我们可以对字符串或文件进行加密。我们以有趣的ROT13加密算法为例进行演示。ROT13是一种偏移13位的凯撒密码,其加密原理如下图所示。Wecanuseencodings.rot_13toencryptastring,thecommandisasfollows:echo"IamChris"|python-mencodings.rot_13Remember,donotuseitforanyrealencryptedcontent.SinceEnglishhas26letters,wecaneasilydecipherthisencryptedstringbyrunningthealgorithmagain:echo'VnzPuevf'|python-mencodings.rot_13Nowlet'stryamorecommonscenario-base64encoding.Wecanbase64encodethestringasfollows:echo"IamChris"|python-mbase64Next,wecanalsousethe-dparametertodecodetheencryptedstring:echo"SSBhbSBDaHJpcwo="|python-mbase64-dbase64isalsooftenusedtoencodeanddecodeimagefiles.我们也可以对文件进行如下编码:python-mbase64get_time_app/print_time.py非常有趣的是,解码后的Python脚本可以即时执行,不会报错:echo"ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCgpkZWYgbWFpbigpOgogICAgY3VycmVudF90aW1lID0gZGF0ZXRpbWUubm93KCkKICAgIHByaW50KGYnQ3VycmVudCB0aW1lIGlzIHtjdXJyZW50X3RpbWV9LicpCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQo="|python-mbase64-d|python7.GetsystemmetadataIfwewanttogetthecurrentsysteminformation,Pythonprovidesaveryeasyway.Weonlyneedtorunthefollowingcommand:python-msysconfigYoucanseethatafterthiscommandisexecuted,allsystemconfigurationinformationwillbedisplayed,suchasthePythonenvironmentpathandenvironmentvariables.Thescreenshotaboveonlyshowspartofthecontent,andtheactualdisplayedcontentwillbeveryrich.如果我们只想显示Python环境路径和当前工作路径,可以执行如下命令:python-msite8。文件压缩我们不用下载tar/zip/gzip等工具就可以使用Python来压缩文件。例如,如果我们想压缩我们刚刚在第4节中编写的应用程序,我们可以运行以下命令将文件夹压缩到一个zip文件中。命令中,选项-c代表“创建”的意思:python-mzipfile-cget_time_app.zipget_time_app当然我们也可以解压压缩文件。经过上面的操作,我们马上解压文件夹,放到一个新的目录下,这样就不会和原来的目录冲突了。下面的命令中,选项-e代表“extract”,即解压的意思:python-mzipfile-eget_time_app.zipget_time_app_extracted如果你不放心,我们可以查看一下:lsget_time_app_extractedcatget_time_app_extracted/get_time_app/print_time.py我们只是以zip文件为例。除了zip格式的解压,Python还支持tar和gzip的解压。总结这篇文章介绍了一种无需编写一行代码即可使用Python内置库的方法。如果你能想到在某些场景下使用这些方法,无疑会为我们提供很多便利。希望本文能对您有所启发和帮助。