当前位置: 首页 > 后端技术 > Python

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

时间:2023-03-25 21:10:41 Python

注:在命令行使用Python时,“-m”选项参数可以实现非常强大的功能优秀Python技术人员必备技能今天分享的文章介绍了8个非常实用的小功能,希望对你有所帮助!Python这门语言之所以在近些年流行起来,是因为我们可以用它写更少的代码来实现复杂的功能。Python开发人员欢迎封装复杂实现但对用户友好的工具包。然而,Python的简单性不止于此。你能相信我们可以不用写任何代码就可以使用Python吗?在接下来的文章中,我们将介绍8个无需编写任何代码即可使用Python内置函数的示例。0.PythonCLI“-m”参数让我们从PythonCLI(命令行界面)开始。虽然我们不必编写代码来使用后面描述的功能,但为了让Python知道我们要执行什么,我们需要使用Python命令行来执行。只要我们的电脑上安装了Python环境,我们就可以在Python命令行界面输入python--help来显示所有支持的参数。由于命令输出内容过长,上图只展示了部分内容。这里最需要强调的是-mmod参数,它将Python模块作为脚本运行。因此,如果模块的实现支持命令行操作,我们可以直接在命令行中使用。接下来我们来体验一下:)1.服务端口测试有时候,我们想要测试ip端口的出网流量,通常telnet命令是一个不错的选择。Windows平台默认不安装telnet软件,使用前需要手动安装。如果只是为了简单的测试,未来的使用场景不多,安装它可能是一种资源浪费。但是如果安装了Python,则不需要下载安装telnet,因为Python内置了对应telnet的模块。我们可以测试谷歌搜索站点的443端口。python-mtelnetlib-d142.250.70.174443如上图所示,网络流量正常,我们甚至从谷歌得到一个空字符的响应。如果我们尝试访问ip的随机端口,则会抛出错误,如下图所示。python-mtelnetlib-d142.250.70.1749992.在本地启动web服务许多Python用户不知道这一点,当他们第一次听说时会感到惊讶。是的,我们不用写任何代码就可以使用Python启动一个web服务,只需要在命令行中执行如下命令即可。运行python-mhttp.server后,显示服务监听本地8000端口,这时我们可以尝试从浏览器访问http://localhost:8000/。Web服务会将命令启动路径下的本地文件系统显示为根目录,换句话说,我们无法访问其父目录。你可能会问,这个函数的使用场景是什么。举个例子,如果你想和你的好朋友分享你电脑某个目录下的很多文本/PDF/图片文件/子目录文件,那么使用这种方法可以非常方便地进行分享。如果您想了解更多关于此主题的信息,可以参考文章3LinesofPythonCodetoWriteAWebServer。如果您按照上面的文章实现了“低代码”解决方案,那么是时候向它添加更多自定义功能了。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.toolJSON字符串现在具有完美缩进的格式化输出!更容易阅读。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就可以做到。假设我们要将其打包成一个“获取时间”的应用程序,我们可以在命令行中运行如下命令。python-mzipappget_time_app-m"print_time:main"在这条命令中,我们只需要设置zipapp的get_time_app名称,指定Python程序的入口文件及其程序入口函数即可。扩展名为.pyz的文件是我们创建的应用程序,因此我们可以将项目作为单个文件而不是文件夹分发。启动程序的方式也很简单,直接用Python调用即可。pythonget_time_app.pyz6。对字符串或文件进行编码和解码通过PythonCLI,我们可以对字符串或文件进行加密。我们以有趣的ROT13加密算法为例进行演示。ROT13是一种偏移13位的凯撒密码,其加密原理如下图所示。我们可以使用encodings.rot_13来加密一个字符串,命令如下。echo"我是克里斯"|python-mencodings.rot_13请记住,不要将它用于任何真正加密的内容。由于英文有26个字母,再次运行算法我们可以轻松破译这个加密字符串:)echo'VnzPuevf'|python-mencodings.rot_13下面我们来尝试一个更常见的场景——base64编码。我们可以按如下方式对字符串进行base64编码。echo"我是克里斯"|python-mbase64接下来,我们还可以使用-d参数对加密后的字符串进行解码。回声“SSBhbSBDaHJpcwo=”|python-mbase64-dbase64也常用于对图像文件进行编码和解码。我们还可以按如下方式对文件进行编码。python-mbase64get_time_app/print_time.pyItisveryinterestingthatthedecodedPythonscriptcanbeexecutedimmediatelywithouterror..echo?"ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCgpkZWYgbWFpbigpOgogICAgY3VycmVudF90aW1lID0gZGF0ZXRpbWUubm93KCkKICAgIHByaW50KGYnQ3VycmVudCB0aW1lIGlzIHtjdXJyZW50X3RpbWV9LicpCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQo="?|?python?-m?base64?-d?|?python7.获取系统元数据如果我们想获取当前的系统信息,Python提供了一种非常简便的方法。Wejustneedtorunthecommandbelow.python-msysconfigYoucanseethatafterthiscommandisexecuted,allsystemconfigurationinformationwillbedisplayed,suchasthePythonenvironmentpathandenvironmentvariables.Thescreenshotaboveonlyshowspartofthecontent,andtheactualdisplayedcontentwillbeveryrich.IfwejustwanttoshowthePythonenvironmentpathandthecurrentworkingpath,wecanexecutethefollowingcommand.python-msite8.FileCompressionWecanusePythontocompressfileswithoutdownloadingtoolssuchastar/zip/gzip.Asanexample,ifwewantedtoziptheapplicationwejustwroteinSection4,wecouldrunthefollowingcommandtozipthefolderintoazipfile.Inthecommand,theoption-crepresentsthemeaningof"create".python-mzipfile-cget_time_app.zipget_time_appOfcourse,wecanalsodecompressthecompressedfile.Immediatelyaftertheaboveoperation,weunzipthefolderandputitinanewdirectory,sothatitwillnotconflictwiththeoriginaldirectory.Inthefollowingcommands,theoption-estandsfor"extract",whichmeansdecompression.python-mzipfile-eget_time_app.zipget_time_app_extractedIfyouarenotatease,wecancheckit.lsget_time_app_extractedcatget_time_app_extracted/get_time_app/print_time.py我们刚才以zip文件为例,演示Python不仅支持zip格式的解压,还支持tar和gzip的解压。总结这篇文章介绍了一种无需编写一行代码即可使用Python内置库的方法。如果你能想到在某些场景下使用这些方法,无疑会为我们提供很多便利。希望本文能对您有所启发和帮助。如果觉得文章还不错,欢迎关注公众号:Python编程学习圈,或者去编程学习网了解更多编程技术知识,还有海量干货学习资料!