python所需要的工具_程序猿最需要的10个Python工具

本文转载自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')

==>

我们收到401“未经授权的错误”消息,因为我们访问API时没有传递授权证书。再试一次,但是这次我们提交有效的用户名和密码。

import requests

requests.get('https://api.github.com/user', auth=('user', 'pass'))

==>

这次我们收到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)))

===>

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

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。里面确实提到了一些我会遇到的问题,但我从来没有想过去搜一下有没有现成的库可以用。

希望它对你也有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值