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

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

首页模拟经营cookie cutter更新时间:2024-06-25

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