个性化阅读
专注于IT技术分析

让开发人员的生活更轻松的十大Python工具

在这个博客中: 学习10个Python工具,这是每个开发人员都必须拥有的!下载并安装“轻松生活的十大工具”构建,其中包含Python的一个版本和本文中列出的所有工具,这样你就可以自己测试它们。

相关文章: 10个常用的Python包用法示例介绍

作为一名开发人员,有时感觉我的sprint任务列表是无限的。问题的部分原因在于,很多任务都是反复出现的。这就是Python工具的用处所在。Python是一种伟大的通用语言,阅读起来很容易,但仍然非常强大。当涉及到处理这些重复的任务时,Python工具、库和受支持的ide如此之多,你一定可以找到一个包来帮助解决你的问题。如果你自己找不到,Python有很棒的社区支持。

这篇文章介绍了一些我经常使用的Python工具,它们可以帮助我解决日常需要完成的关键任务,让我的生活变得更轻松。就让我们一探究竟吧。

#1 使用Flask开发简单的Web框架

需要设置web服务器吗?你有两秒钟时间吗?因为这是用Python启动一个简单的web服务器所需的时间:

python -m http.server 8000

就是这样,你有一个可以从浏览器连接到的工作服务器。但是对于一个基本的web应用程序来说,这可能太简单了。进入Flask。

Flask是一个用Python构建的微web框架。它是“微”的,因为它没有任何数据库抽象层、表单验证或邮件支持。幸运的是,它有大量的扩展,你可以插入和使用,如果你想要做的只是提供一个简单的API,那么它是完美的。

要使用Flask创建一个API服务器,使用下面的脚本:

from flask import Flask
    from flask import jsonify
    
    app = Flask(__name__)
    
    @app.route('/')
    def root():
        return jsonify(
            app_name="Top 10 Python Tools",
            app_user="ActiveState"
        )

执行服务器:

FLASK_APP=flask.py flask run

最后,当你在浏览器中访问URL时,你应该看到以下JSON:

{"app_name" : "Top 10 Python Tools", "app_user" : "ActiveState"}

#2 使用Scrapy抓取网页

Scrapy是一个强大的工具,可以让你“刮”或更精确地从网站上提取信息。当需要从多个网站或网页上提取大量信息时,手动处理是没有效率的。相反,开发人员使用“蜘蛛”或“爬行器”来自动抓取网页上的信息。

Scrapy提供了使用HTML标记或CSS类提取信息的易于使用的方法和包。你可以启动Scrapy Shell,这是一种交互式模式,让你可以使用不同的方法,通过发出以下命令:

scrapy shell

作为一个简单的练习,让我们尝试提取谷歌主页上搜索按钮的值。为此,我们需要找到按钮使用的类。一个简单的“Inspect Element”显示这个类是“gb1”。

在交互式Scrapy Shell中,执行以下操作:

response = fetch("https://google.com")
    response.css(".gb1::text").extract_first()
    
    ==> "Search"

就是这么简单!

#3 Requests的API调用

Requests是一个强大的HTTP库。有了它,你可以自动化任何与HTTP请求相关的事情,包括API调用的自动化,这样你就不再需要使用rest客户端手动进行调用了。它提供了一些有用的特性,比如授权处理、JSON/XML解析和会话处理。

让我们来看一个快速访问Github API的例子,它位于授权墙后面:

import requests
    requests.get('https://api.github.com/user')
    
    ==> <Response [401]>

我们收到401“未授权错误”消息,因为我们试图访问API而没有传递所需的授权凭证。让我们再试一次,但这一次我们将提交一个有效的用户名和密码。

import requests
    requests.get('https://api.github.com/user', auth=('user', 'pass'))
    
    ==> <Response [200]>

这次我们得到一个200的“Ok/Success”消息。Requests包提供的功能既广泛又深入。有关其功能的更多信息,请参阅Requests文档

#4 Click命令行打包

Click是一个Python包,可以用来创建漂亮的命令行接口。

作为开发人员,我们编写了许多使我们的生活更容易的脚本,例如获取外部IP地址,或使服务器ping检查它是否活着,或只是查找时间。当然,要运行任何脚本,你必须导航到该目录,然后执行它。想传递参数吗?忘记它!在解析所有用户选项时,你将放弃。

使用Click,你可以打包任何向命令行公开功能的Python脚本。打包之后,你就可以直接从终端访问脚本了。

让我们来看一个例子:

import click
    
    @click.command()
    @click.option('--count', default=1, help='Number of greetings.')
    @click.option('--name', prompt='Your name',
                  help='The person to greet.')
    def hello(count, name):
        """Simple program that greets NAME for a total of COUNT times."""
        for x in range(count):
            click.echo('Hello %s!' % name)
    
    if __name__ == '__main__':
        hello()

方法选项向命令公开其参数名。这里暴露了两个参数:count和name。

最后调用我们的脚本:

python hello.py --count=3
    
    Your name: John
    Hello John!
    Hello John!
    Hello John!

#5 使用Selenium进行自动化测试

Selenium是一个编写自动化测试用例的测试框架。尽管Python包是用Java编写的,但它提供了对几乎所有Selenium函数的类似api的访问。

Selenium通常用于自动测试应用程序的UI,但是你也可以使用它在你的机器上自动执行任务,如打开浏览器、拖放文件等等。

让我们看一个快速的例子,展示如何打开浏览器并访问谷歌的主页:

from selenium import webdriver 
    import time 
      
    browser = webdriver.Chrome(executable_path ="C:\Program Files (x86)\Google\Chrome\chromedriver.exe") 
      
    website_URL ="https://www.google.co.in/"
    brower.get(website_URL) 
    
    refreshrate = int(15) 
      
    # This would keep running until you stop the compiler. 
    while True: 
        time.sleep(refreshrate) 
        browser.refresh() 

现在这个脚本每15秒在浏览器中刷新谷歌主页。

#6 关于熊猫的数据分析

Pandas是一个简单而强大的数据分析工具。你可以使用它读取大量数据,清理数据,并对其执行统计分析。你可以快速地为数据生成摘要,甚至将其拆分。

分析完数据后,还可以使用外部库(如Matplotlib)可视化数据。

关于Pandas最棒的一点是,它是建立在NumPy之上的,NumPy是另一个神奇的数据分析工具,用于对数据执行数值方法。这意味着大多数NumPy方法都是在Pandas中已经可用的函数。

更多信息,包括许多如何与熊猫一起工作的例子,请参阅我之前关于如何使用Pandas清理机器学习数据集的帖子。

#7 使用Faker生成假数据

这无疑是我工具包中最有用的工具!每当我需要填充占位符文本或添加虚拟数据到网站,我就使用Faker

有了它,你可以生成假名字、地址、描述等等!例如,下面的脚本创建一个联系人条目,包括姓名、地址和一些描述文本:

    from faker import Faker
    fake = Faker()
    
    fake.name()
    # 'Lucy Cechtelar'
    
    fake.address()
    # '426 Jordy Lodge
    #  Cartwrightshire, SC 88120-6700'
    
    fake.text()
    # 'Sint velit eveniet. Rerum atque repellat voluptatem quia rerum. Numquam excepturi
    #  beatae sint laudantium consequatur. Magni occaecati itaque sint et sit tempore. Nesciunt

#8 用Pillow处理图像

很多时候,我需要以某种方式修改图像,使它们更适合于特定的目的,例如模糊细节,组合一个或多个图像,或创建缩略图。作为一名开发人员,我的首选工具不是像Photoshop那样的GUI应用程序,而是一个名为“Pillow”的强大的Python图像处理工具。

我经常把自制的Pillow脚本和Click结合起来,然后直接从命令行访问它们。对于加速重复的图像处理任务非常宝贵。

让我们看一个快速模糊图像的例子:

 from PIL import Image, ImageFilter
    
    try:
        original = Image.open("Lenna.png")
    
        # Blur the image
        blurred = original.filter(ImageFilter.BLUR)
    
        # Display both images
        original.show()
        blurred.show()
    
        blurred.save("blurred.png")
    
    except:
        print "Unable to load image"

简单明了。

#9 使用Pendulum进行日期和时间解析

使用日期和时间格式从来都不是一件有趣的事情。我绝对不喜欢在时区和模糊的时间工作。虽然内置的Python datetime模块做了相当不错的工作,但Pendulum是一个强大的工具!它有一个更直观的界面,允许快速处理。它支持时区转换、日期时间操作和格式化。

让我们看一个快速的例子,它允许你获取三个不同时区的时间,然后操纵UTC:

from datetime import datetime
    import pendulum
    
    utc = pendulum.timezone('UTC')
    pst = pendulum.timezone('America/Los_Angeles')
    ist = pendulum.timezone('Asia/Calcutta')
    
    print(type(utc))
    print('Current Date Time in UTC =', datetime.now(utc))
    print('Current Date Time in PST =', datetime.now(pst))
    print('Current Date Time in IST =', datetime.now(ist))
    print(type(datetime.now(ist)))
    
    ===>
    <class 'pendulum.tz.timezone.FixedTimezone'>
    Current Date Time in UTC = 2020-02-29 09:16:45.031461+00:00
    Current Date Time in PST = 2020-02-29 02:16:45.031501-07:00
    Current Date Time in IST = 2020-02-29 14:46:45.031555+05:30
    <class 'datetime.datetime'>
        
    utc_time.add(years=1)
    utc_time.subtract(months=2)
    print('Updated UTC Time', utc_time)
    
    ==>
    Updated UTC Time 2020-04-29T09:16:45.031608+00:00

#10 使用cookecutter创建代码模板

cookecutter是一个美化的小抄!它是一个命令行工具,可以从“cookiecutters”(项目模板)创建项目。

使用它,你可以创建项目模板并将其分发给你的团队(或者将其开源)。现在,所有的团队成员都可以使用你的项目作为他们自己的基本版本,并且只需要根据他们的需要进行修改。

如果你维护了一个Python项目,或者对将项目发布到PyPI感兴趣,那么最常用的cookiecutter之一就是audreyr/cookie-ppackage。有了它,你就得到了一个包含测试、发行版和文档的“框架”Python包,然后只需根据你自己的包对其进行调整,以完成你的项目,甚至自动将其发布到PyPI。

这些Python工具应该在每个开发人员的工具箱中

有句古老的格言说:“如果你必须不止一次地完成一项任务,那就把它自动化”,这在今天仍然适用。Pythonistas将这句话铭记于心,并在Python包索引(PyPI)中提供了大量的包,你可以使用这些包来帮助自动化所有那些耗费时间的手动任务,并剥夺作为开发人员的乐趣。

赞(0) 打赏
未经允许不得转载:srcmini » 让开发人员的生活更轻松的十大Python工具
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏