网易首页 > 网易号 > 正文 申请入驻

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

0
分享至

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

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

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

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)))
===>

'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

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

希望它对你也有用。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
消费者曝15克卫龙魔芋爽称重仅8.9克,卫龙客服:你不是普通的消费者吧!卫龙官方致歉

消费者曝15克卫龙魔芋爽称重仅8.9克,卫龙客服:你不是普通的消费者吧!卫龙官方致歉

和讯网
2024-05-23 15:02:11
5月23俄乌:俄罗斯试探西方底线,俄军Su-25战机被击落,攻势停滞

5月23俄乌:俄罗斯试探西方底线,俄军Su-25战机被击落,攻势停滞

山河路口
2024-05-23 15:35:08
英伟达股价首次破1000美元!黄仁勋:Token生意将创造100万亿价值

英伟达股价首次破1000美元!黄仁勋:Token生意将创造100万亿价值

量子位
2024-05-23 16:17:51
王室又发布凯特新照片了,凯特身穿红色上衣,白色打底,有点累

王室又发布凯特新照片了,凯特身穿红色上衣,白色打底,有点累

亦纯杂谈
2024-05-23 18:03:22
网友医院收费处目睹心酸一幕:年轻夫妇抱着婴儿,因少了236元无法缴费!

网友医院收费处目睹心酸一幕:年轻夫妇抱着婴儿,因少了236元无法缴费!

六子吃凉粉
2024-05-23 21:41:57
据说中国手机在非洲火火火火火了?!

据说中国手机在非洲火火火火火了?!

了不起的中国制造
2019-12-03 06:17:03
许家印的保护伞,终于被查了!

许家印的保护伞,终于被查了!

华人星光
2024-05-23 15:35:13
这是一个坏消息!我们的超算已经跌出前十了!可能是缺乏高端芯片

这是一个坏消息!我们的超算已经跌出前十了!可能是缺乏高端芯片

作家李楠枫
2024-05-23 07:50:50
媒体人:当年韦世豪更衣室和李铁吵架,说阿兰费南多凭什么不首发

媒体人:当年韦世豪更衣室和李铁吵架,说阿兰费南多凭什么不首发

直播吧
2024-05-23 21:25:04
罗森宣布将于7月24日退市,在华门店超6000家

罗森宣布将于7月24日退市,在华门店超6000家

红星新闻
2024-05-23 19:32:35
赖清德就职演讲口出狂言,大陆围台军演,怕不怕?

赖清德就职演讲口出狂言,大陆围台军演,怕不怕?

雨秋闲话
2024-05-23 16:10:28
中国一旦进入战争,这些数字告诉你,只有一个结论:缴械投降

中国一旦进入战争,这些数字告诉你,只有一个结论:缴械投降

蓝婉莹
2024-05-12 02:22:39
未付7.9万元工资成“老赖”,昔日明星车企烧光几十亿却造不出车

未付7.9万元工资成“老赖”,昔日明星车企烧光几十亿却造不出车

每日经济新闻
2024-05-24 00:40:51
联合国一槌定音,黄皮乌拉瞬间傻眼!

联合国一槌定音,黄皮乌拉瞬间傻眼!

听风听你
2024-05-23 10:27:56
突然官宣!女神终于要嫁人了!

突然官宣!女神终于要嫁人了!

圈里的甜橙子
2024-05-23 21:03:17
离谱!老人未消费在星巴克休息,嫌吵闹怒砸星巴克,商家回应

离谱!老人未消费在星巴克休息,嫌吵闹怒砸星巴克,商家回应

看晓天下事
2024-05-23 15:41:14
使劲折腾:多地出现俄文路牌

使劲折腾:多地出现俄文路牌

据说说娱乐
2024-05-23 22:43:05
森林北深夜辟谣,评论区沦陷了!王思聪看不下去大骂:不要脸!

森林北深夜辟谣,评论区沦陷了!王思聪看不下去大骂:不要脸!

爱吃番茄猪扒的使者
2024-05-22 23:00:19
随时参战!解放军“联合利剑-2024A”突然展开,直击赖清德命门

随时参战!解放军“联合利剑-2024A”突然展开,直击赖清德命门

王子看台海
2024-05-23 16:42:15
乌精确斩首,俄上将司令被炸死,美防长拉姆施泰因会议上慷慨激昂

乌精确斩首,俄上将司令被炸死,美防长拉姆施泰因会议上慷慨激昂

史政先锋
2024-05-22 19:30:31
2024-05-24 03:10:44
正当的娱乐
正当的娱乐
开心就好
1146文章数 1259关注度
往期回顾 全部

科技要闻

黄仁勋业绩会万字实录:我们的压力太大了

头条要闻

奥迪车主称每次启动车辆就会显示"续费弹窗" 客服回应

头条要闻

奥迪车主称每次启动车辆就会显示"续费弹窗" 客服回应

体育要闻

欧文,三十二而立

娱乐要闻

大S儿子被学校退学,张兰称孙子没人管

财经要闻

九鼎金租减值罗生门:郑州银行藏雷?

汽车要闻

上汽大通大家7超混/大家9超混将于6月7日正式上市

态度原创

家居
本地
游戏
公开课
军事航空

家居要闻

光阴流年 摇曳爱恋

本地新闻

强制措施展铁腕 “交叉执行”勇亮剑

无畏契约:凰鸣四海就在今日!FPX2-1战胜FUT拿下国际赛首胜

公开课

近视只是视力差?小心并发症

军事要闻

以军继续杰宁攻势 巴武装组织打击以目标

无障碍浏览 进入关怀版