在这个博客中: 学习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)中提供了大量的包,你可以使用这些包来帮助自动化所有那些耗费时间的手动任务,并剥夺作为开发人员的乐趣。
评论前必须登录!
注册