转载说明:原创不易,未经授权,谢绝任何形式的转载 7个Python库提升开发效率,让你的项目更优秀 当有库可以完成你需要的功能,为什么还要自己写代码呢?库是开发者最好的朋友和救星。在我看来,一个好的项目会利用一些最好的可用库。 本文是Python精彩库系列的一部分,其中我总结了7个Python库,可以帮助你在开发中获得便利。1。diagrams 当你在开发云系统时,想要在架构设计过程中使用图形来说明你的设计方案,你可能会使用一些设计工具来创建和修改图形。但是使用这些工具需要熟悉它们的使用方法,同时也需要花费时间去了解工具本身的特点和限制。 而diagrams库就是一个可以在Python代码中创建云系统架构图的工具。你只需要编写简单的Python代码,就可以快速创建云系统架构图,并且可以方便地进行版本控制。该库目前支持多种云服务,包括AWS、Azure、GCP、Kubernetes、阿里云、OracleCloud等。 以下是一个简单的示例代码,用于绘制一个基本的云系统架构图,该图包括一个Web服务器、一个数据库服务器和一个文件存储服务器。其中,diagrams库的核心就是创建图形对象,通过图形对象之间的连接来表示不同组件之间的关系。fromdiagramsimportDiagram,Clusterfromdiagrams。aws。computeimportEC2fromdiagrams。aws。databaseimportRDSfromdiagrams。aws。storageimportS3withDiagram(WebSystem,showFalse):withCluster(Cluster):EC2(WebServer)RDS(Database)EC2(WebServer)S3(Files) 该示例代码中,首先创建了一个Diagram对象,表示一个名为WebSystem的云系统架构图。然后,使用Cluster对象创建了一个名为Cluster的子图,用于包含Web服务器、数据库服务器和文件存储服务器。接着,创建了三个图形对象,分别代表EC2、RDS和S3。最后,使用箭头符号()表示Web服务器和数据库服务器、Web服务器和文件存储服务器之间的连接关系。 运行上面的代码,就可以得到一个类似上面的云系统架构图。 在这个图中,Web服务器、数据库服务器和文件存储服务器之间的连接关系非常清晰。而且,如果需要修改图形对象的属性,比如调整服务器的大小、颜色和字体等,也非常容易。同时,这个代码示例中的代码量非常小,易于编写和维护。 更多关于diagrams库的详细介绍和使用方法,可以参考其官方文档。 https:github。commingrammerdiagrams2。pyarmor PyArmor是一个用于保护Python脚本的工具,它提供了多种保护功能,例如加密源代码、控制代码的运行时间、保护模块导入等。PyArmor支持Python2和Python3,并且可以在Windows、Linux和macOS上使用。 使用PyArmor,您可以通过简单的命令行接口对Python脚本进行保护。下面是一个简单的使用示例。 首先,您需要安装PyArmor,可以使用pip进行安装:pipinstallpyarmor 接下来,您需要使用PyArmor创建一个项目,可以使用以下命令:pyarmorinitmyproject 这将创建一个名为myproject的目录,其中包含一些示例文件和一个名为pyarmor。cfg的配置文件。 接下来,您可以将您要保护的Python脚本放在myproject目录中。例如,假设您有一个名为myscript。py的脚本,可以将其放在myproject目录中。 现在,您可以使用以下命令对脚本进行加密:pyarmorobfuscatemyscript。py 这将生成一个名为myscript。pye的加密脚本,该脚本包含了加密的源代码。您可以使用以下命令运行加密脚本:pyarmorrunmyscript。pye 如果您想控制代码的运行时间,可以使用以下命令:pyarmorobfuscatetime3600myscript。py 这将限制脚本的运行时间为3600秒(1小时)。 除了这些基本功能之外,PyArmor还提供了许多其他的保护选项,例如保护模块导入、动态密钥加密等。 总之,PyArmor是一个非常有用的工具,可以帮助您保护Python脚本的源代码和知识产权。 https:github。comdashingsoftpyarmor3。tesserocr tesserocr是一个基于TesseractOCR引擎的Python库,用于识别和提取图片中的文本。 Tesseract是一个开源的OCR引擎,可以识别多种语言的文本,并且支持多种图像格式。Tesserocr利用Tesseract引擎实现了Python接口,方便在Python环境下使用OCR技术。 下面是一个使用tesserocr库的示例代码:importtesserocrfromPILimportImage读取图片imageImage。open(test。png)对图片进行灰度处理grayimageimage。convert(L)对图片进行二值化处理threshold80binaryimagegrayimage。point(lambdax:0ifxthresholdelse255)进行OCR识别texttesserocr。imagetotext(binaryimage)print(text) 以上代码实现了以下步骤:通过PIL库读取一张图片;将图片转换成灰度图像;对灰度图像进行二值化处理;使用tesserocr库对二值化图像进行OCR识别;输出识别出的文本。 需要注意的是,以上代码仅仅是一个简单的示例,实际使用时需要根据具体情况对图片进行适当的预处理,以提高识别准确率。 https:github。comsirfztesserocr4。shiv Shiv是一个Python打包和分发工具,它可以将一个Python应用程序打包为单个可执行文件,便于部署和分发。与传统的打包方式不同,Shiv打包的可执行文件包含了所有需要的依赖库和资源文件,可以直接运行,无需在目标系统上安装Python或额外的依赖库。Shiv还支持虚拟环境,可以保证应用程序在不同的Python环境中运行一致。 使用Shiv可以极大地简化应用程序的部署过程,特别是对于没有Python环境或没有足够权限安装依赖库的系统。 以下是使用Shiv打包和运行一个简单的Python应用程序的示例: 首先,安装Shiv:pipinstallshiv 接下来,创建一个Python应用程序,例如一个简单的FlaskWeb应用程序:fromflaskimportFlaskappFlask(name)app。route()defhello():returnHello,world!ifnamemain:app。run() 将应用程序保存为app。py文件。然后,使用以下命令将应用程序打包成可执行文件:shivcapp:appapp。pyoapp 其中,app:app指定了应用程序入口点,app。py是应用程序源代码文件,app是打包后的可执行文件的名称。 最后,运行打包后的应用程序:。app 这样就可以在本地运行打包后的应用程序了。要在其他系统上运行,只需将打包后的文件复制到目标系统上即可,无需安装Python或其他依赖库。当然,Shiv还支持更多的选项和配置,具体可以参考官方文档。 https:github。comlinkedinshiv5。maya Maya是一个用Python实现的日期和时间处理库,旨在提供简单、易用的API,以便开发人员可以轻松地进行各种日期和时间操作,例如日期解析、日期格式化、时区转换、日期加减等。Maya在使用上比标准库的datetime模块更加直观、易用,同时支持更多的时区功能和格式化选项。 Maya的主要特点包括:支持ISO8601格式以及其他常用格式的日期解析和格式化;支持大部分的国际时区,并可以轻松进行时区转换;使用timedelta进行日期计算,支持天数、小时、分钟、秒等的加减运算;支持各种日期和时间的比较和排序;可以很方便地与标准库的datetime模块进行互操作; 下面是使用Maya进行日期和时间处理的一些代码示例:importmaya解析日期字符串,返回MayaDT对象dtmaya。parse(20220215T14:30:00。000Z)显示日期和时间print(dt。iso8601())显示日期和时间的日期部分print(dt。date)显示日期和时间的时间部分print(dt。time)显示日期和时间的时区信息print(dt。timezone)转换为UTC时区utcdtdt。astimezone(UTC)日期加减操作newdtdt。add(days1,hours2,minutes30)日期比较print(dtnewdt)print(dtnewdt)使用timedelta进行日期计算deltanewdtdtprint(delta) 这些代码展示了如何使用Maya解析日期字符串、获取日期和时间的各个部分、进行时区转换、进行日期计算和比较等基本操作。Maya还支持更多的功能,例如处理日期范围、本地化日期和时间、格式化日期和时间等。更多信息可以参考Maya的文档。 https:github。comtimofurrermaya6。pythondecouple 解耦是编码中最佳实践之一。这个库将帮助你实现严格的配置与代码分离。它可以帮助你组织你的设置,以便你可以在不必重新部署应用程序的情况下更改参数。它还包括许多其他功能,如定义全面的默认值、正确转换值为正确的数据类型、只有一个配置模块来管理所有实例等等。这个库在Github上获得了超过2k的星。 通常,在应用程序中,我们需要设置一些配置参数,如数据库的地址、API密钥、加密密钥等。这些参数通常不应该硬编码在代码中,而是应该存储在某种配置文件中,以便在需要时进行修改。。env文件就是这样一种文件,它可以存储键值对,如DATABASEURLpostgres:user:passwordlocalhostdbname。 pythondecouple可以很方便地读取。env文件中的键值对,并将它们转换为Python变量,使得这些配置参数可以很方便地在代码中使用。 以下是一个示例代码:fromdecoupleimportconfig读取名为MYSECRETKEY的变量,如果不存在则返回默认值mysecretkeysecretkeyconfig(MYSECRETKEY,defaultmysecretkey)读取名为DATABASEURL的变量,并将其解析为URL对象fromurllib。parseimporturlparseresulturlparse(config(DATABASEURL))读取一个整数类型的变量maxworkersconfig(MAXWORKERS,castint) 在上面的示例中,config函数用于读取。env文件中的键值对,并将其转换为Python变量。cast参数用于指定要转换的类型,如int、float、bool等。 除了从。env文件中读取配置参数外,pythondecouple还提供了其他一些方便的函数和工具,如从环境变量中读取配置、使用多个配置文件等。更多详细信息可以参考官方文档。 总之,pythondecouple使得管理和使用配置参数变得更加方便和安全,建议在开发Python应用程序时使用它来管理配置。 https:github。comhenriquebastospythondecouple7。cerberus Cerberus是一个用于数据验证的Python库,能够轻松验证任何格式的数据,并以可读的方式返回错误消息。Cerberus设计用于验证JSONlike数据格式,例如RESTfulAPI输入或配置文件。它具有简单的语法和易于使用的API,并且支持高级数据类型,例如日期和时间,列表和嵌套数据结构。 以下是一个Cerberus的使用示例: 安装Cerberus:pipinstallcerberus 然后在Python中导入Cerberus:fromcerberusimportValidator 接下来,我们定义一个验证器实例,并为其指定验证规则:schema{name:{type:string,required:True},age:{type:integer,required:True,min:18,max:99},email:{type:string,required:True,regex:〔w。〕〔w。〕(。〔w〕)39;},isstudent:{type:boolean,required:True},courses:{type:list,required:True,schema:{type:dict,schema:{name:{type:string,required:True},description:{type:string,required:True}}}}}vValidator(schema) 然后,我们定义一个要验证的数据字典并使用validate方法进行验证:data{name:JohnDoe,age:25,email:johndoeexample。com,isstudent:True,courses:〔{name:Math,description:IntroductiontoCalculus},{name:Science,description:IntroductiontoPhysics}〕}ifv。validate(data):print(Dataisvalid)else:print(Dataisinvalid)print(v。errors) 以上示例中,我们定义了一个包含五个字段的验证规则:name、age、email、isstudent和courses。name和age字段是必填项,age字段必须在18到99岁之间,email字段必须为有效的电子邮件地址,isstudent字段必须为布尔值,courses字段必须为列表,并且列表中的每个元素都必须为字典类型,字典类型必须具有name和description字段,且这两个字段都是必填项。 然后我们定义了一个数据字典,并使用validate方法对其进行验证。如果数据字典符合验证规则,则打印Dataisvalid;否则打印Dataisinvalid并输出错误消息。结束 今天的分享就到这里,希望对你有所帮助。如果你知道任何其他高效的Python工具库,欢迎你在评论区补充。感谢你的阅读,如果你喜欢我的分享,别忘了点赞转发,让更多的人看到,最后别忘记了关注前端达人,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。