本文转载自Pycoder's Weekly 本周的推送之一:Top 10 Python Tools to Make a Developer's Life Easier. 感兴趣的同学可以自行搜索原文,链接在这里:https://www.activestate.com/blog/top-10-Python-tools-to-make-your-life-easier/
这里只是搬运工,如果有翻译的不合适的地方欢迎指正~
我作为一个开发者,有时感觉需求总是做不完。原因之一是许多相同的任务总是不断出现,这也是我们为什么需要Python工具。Python是一种很棒的通用语言,它在具有强大功能的同时,还易于阅读(几乎像读英语)。当遇到这些重复的任务时,因为Python拥有很多库和兼容的IDE,所以你一定会找到能解决问题的包。如果你自己找不到合适的包,Python还提供出色的社区支持。
这篇文章介绍了一些我经常使用的Python工具。让我们一起来看一下吧~
#1 使用Flask搭建Web框架
我们只需要两秒钟就可以用Python设置好一个网络服务器。
python -m http.server 8000
就是这么简单。你可以从浏览器连接到这个服务器。但这个版本还是过于简单了,所以我们需要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"
)
要运行服务器:
LASK_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
做一个小练习。我们尝试提取Google主页上搜索按钮的值。在这之前需要找到按钮使用的类。通过简单的“元素检查”我们发现该类为“gb1”。
在Scrapy Shell中,执行以下操作:
response = fetch("https://google.com")
response.css(".gb1::text").extract_first()
==> "Search"
(也不知道百度行不行)
#3 用Requests调用API
Requests是一个非常强大的HTTP库。有了它,你可以利用HTTP请求来自动执行几乎所有操作,包括自动执行API调用。它有很多功能,例如授权处理,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“确定/成功”消息。
#4 使用Click进行命令行打包
Click是一个python包,用于创建好看的命令行界面。
作为开发人员,我们会编写许多脚本,例如获取外部IP地址,或通过服务器ping来检查其是否仍在运行,或者只是查找时间。当然,要运行任何脚本,你必须先导航到目录然后执行它。想要传参数?没戏!在解析所有用户选项时,你会弃疗的。
使用Click,你可以打包任何向命令行公开功能的Python脚本。打包后,你可以直接从terminal访问脚本。
让我们看一个例子:
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()
Click里面的option会将其参数名称公开。上面的例子有两个参数:count和name。
最后调用我们的脚本:
python hello.py --count=3
Your name: John
Hello John!
Hello John!
Hello John!
#5 使用Selenium进行自动化测试
Selenium是一个编写自动测试用例的测试框架。尽管它是用Java编写的,但Python包提供了对几乎所有Selenium函数的类API访问。
Selenium通常用于自动测试应用程序的UI,但是你也可以使用它来自动化如打开浏览器,拖放文件等操作。
让我们看一个简单的示例,该示例显示如何打开浏览器并访问Google主页:
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秒刷新一次浏览器中的google主页。
#6 使用Pandas进行数据分析
Pandas是一个简单而强大的数据分析工具。你可以用它读取大量数据,对数据进行清理并对其进行统计分析。也可以快速总结或拆分数据。
分析完数据后,你还可以使用Matplotlib等外部库将其可视化。
Pandas最好的地方是它建立在NumPy的基础上,而NumPy有很多数值分析/数学相关的函数。这意味着大多数NumPy中的函数在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应用程序,而是一个功能强大的Python图像处理工具,称为Pillow。
我经常将自制的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内置的日期时间模块做得相当不错,但Pendulum更强大!它有更直观的界面,可以快速处理数据。它还支持时区转换,日期时间操作和格式设置。
让我们看一个简单的示例,你可以用它获取3个不同时区的时间,然后使用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 使用Cookiecutter创建代码模板
Cookiecutter是个很好用的备忘单!它可以用命令行从“cookiecutter”中获取项目模板创建项目。
因此,你可以用它创建项目模板并将其分发给自己的团队(或开源)。开源之后,所有团队成员都可以将你的项目用作自己的基本版本,只需进行修改即可满足他们的需求。
如果你维护一个Python项目,或有兴趣将项目发布到PyPI,最常用的cookiecutter之一就是audreyr / cookiecutter-pypackage。你可以用它获得一个基础版 Python软件包,其中包括测试,发行版和文档,然后针对你自己的软件包进行修改即可完成你的项目。你还可以自动将其发布到PyPI。
呼,本来以为这篇文上上周就可以发出来,没想到慢慢悠悠翻译了这么久。
第一次翻译文章,感觉很神奇。英文版其实我花了大概十分钟就看完了,而且自认里面没有什么生僻词,于是起了翻译的想法。但是翻译又是另一回事,有些句子意思懂了,但是不知道如何才能翻成看起来非常顺畅的中文语句。
有些package确实我自己也没用过,所以并没有办法完全理解文中的深意,只能浅显地写出字面意思。
所以如果某些句子或词语使用不当,欢迎指出。
刚看到这篇文章时,我觉得它非常全面地介绍了很多很有用的package。里面确实提到了一些我会遇到的问题,但我从来没有想过去搜一下有没有现成的库可以用。
希望它对你也有用。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved