|
|
发表于 2022-10-22 11:04:38
|
显示全部楼层
竟然才看到这个问题!
最近两年养成了每天浏览、收藏、分享开源项目的习惯,粗略估算一下,这两年前后整理Python项目至少也有上千个了。
逐个罗列太多了,今天就优中选优挑选出20个我认为非常不错的项目推荐给大家!
您的点赞是对优质内容最大的支持,您的支持才能够避免劣币驱逐良币,让优质内容被更多人看到!
1. GeneralNewsExtractor
Star:1.1k
根据论文《基于文本及符号密度的网页正文提取方法》实现的一款网络正文抽取工具。在今日头条、网易新闻、游民星空、观察者网、凤凰网、腾讯新闻、ReadHub、新浪新闻做了测试,发现提取效果非常出色,几乎能够达到100%的准确率。
2. you-get
一款用于从Web下载媒体内容(视频、音频、图像)Python命令行工具,使用便捷,支持Youtube、Twitter、TED、网易云音乐、哔哩哔哩、腾讯视频、优酷视频、央视网、抖音、爱奇艺、虾米、酷狗......等几十个音视频平台。而且,功能非常强大,别的工具无法下载的,它都可以。
3. bullet
Star:2.8k
一个支持终端输入和菜单选择的 Python 库。可以让使用者在终端上用方向键移动、单选、复选、密码输入等,而且支持定制化格式和颜色。
4. Gooey
Star:8.5k
这是一个将Python 2或3控制台程序转换为GUI应用程序工具,
Gooey通过简单的在argarse上调用装饰器的方式就可以实现程序的界面化,如果需要进行更精细的调整,则可以使用嵌入式替换GooeyParser代替ArgumentParser,
5. memory_profiler
Star:2k
Python是一门相对简单的编程语言,这里所说的简单是指入门简单。因此,很多人忽略了程序底层的内容,例如,空间复杂度、时间复杂度等。对于很多人来说写完程序能够跑通即可,但是一个好的程序要兼备考虑程序的复杂度、内存占用等。
这是一个依赖于psutil的python模块,用于监视进程的内存消耗,以及对python程序的内存消耗进行逐行分析。
@profiledef my_func(): a = [1] * (10 ** 6) b = [2] * (2 * 10 ** 7) del b return aif __name__ == '__main__': my_func()
执行程序,
$ python -m memory_profiler example.pyLine # Mem usage Increment Line Contents============================================== 3 @profile 4 5.97 MB 0.00 MB def my_func(): 5 13.61 MB 7.64 MB a = [1] * (10 ** 6) 6 166.20 MB 152.59 MB b = [2] * (2 * 10 ** 7) 7 13.61 MB -152.59 MB del b 8 13.61 MB 0.00 MB return a
6. wtfpython
Star:18.6k
wtfpython这个Python项目两年前就有所耳闻,首先说一下它的全名,比较粗俗“What the f*ck Python!”,就如同前面所说的那样,虽然很多人认为Python非常容易,但是它也有很多不为人知的特性。
有很多点按照我们的理解应该是这样的,但是当运行之后却发现和我期望的结果有很大出入,具体问题出现在哪了,却很难找出来。wtfpython这个项目就总结了这些不为人知的特性,能够让你发现更多Python令人惊奇的地方。
例如,下面这个例子,
some_dict = {}some_dict[5.5] = "Ruby"some_dict[5.0] = "JavaScript"some_dict[5] = "Python"
输出,
>>> some_dict[5.5]"Ruby">>> some_dict[5.0]"Python">>> some_dict[5]"Python"
按照正常的结果some_dict[5.0]不是应该输出“JavaScript”吗?为什么输出了“Python”?下面就是解释,
7. explainshell
Star:7.5k
作为IT/互联网相关的工作人员,哪怕不是开发者,也有可能会和Linux打交道,我们可以用Linux进行开发、运维等,因此,Linux就成为了一项非常重要的个人技能。
使用Linux过程中主要打交道的对象就是繁多的Linux命令和选项(options)就成了令人头疼的事情,举一个最为简单的例子,
> ls -al
这个Linux命令包含两个部分,command和options,ls是查看命令,-a和-l分别代表:显示所有文件(包括以.开头的隐藏文件)、以列表形式显示。
这些常用的我们都知道,但是有很多使用频率较少的怎么办?我们可以借助explainshell。
它是一款利用Python开发的Linux命令行工具,通过解析帮助文档,逐个匹配一行Linux命令中不同字符的含义,让你对Linux命令能够一目了然,是一款非常棒的Linux学习工具。
8. httpie
Star:45.5k
不同组件之间相互访问可以通过很多方式,其中restful是比较常用的一种。这里就涉及http请求,我们需要测试数据能够正确的上传和下载。在处理http请求过程中使用较多的工具就是curl。
curl有很多明显的弊端:对用户不够友好,命令冗长;可视化效果差,没有高亮。httpie就是curl的一个非常好的替代者,它的使用更加简洁明了,而且能够高亮显示请求结果。
9. glances
Star:14.9k
glances就如同它的汉语意思那样,“一眼”、“一瞥”,能够通过一个简单的命令对系统信息一目了然,了如指掌。
glances利用Python编写的一个跨平台的监视工具,旨在通过curses或基于Web的界面提供大量监视信息。
你不仅可以通过终端命令行使用该工具,还可以web界面、API接口等对服务器进行远程监控,可以将统计信息导出到文件或数据库。
10. python-fire
Star:16.1k
python-fire是一个款python命令行接口(CLI),仅仅凭它的来历就值得关注一下,它是由谷歌开源的一款python工具包。
我们在开发项目时往往会需要从命令行传入参数,以往常用的有sys、argparse等,既然有一些成熟的命令行工具,为什么还要推荐python-fire呢?
因为它有如下优势:
- 实现接口更加简洁
- 创建CLI接口更加简单
- 能够将现有代码转化为接口
- 它使得bash和python之间的转换更加容易
示例,
import fireclass Calculator(object): """A simple calculator class.""" def double(self, number): return 2 * numberif __name__ == '__main__': fire.Fire(Calculator)
接下来,我们可以在命令行下调用对应的接口,也可以通过参数名称直接传参,
> python calculator.py double 10 # 20> python calculator.py double --number=15 # 30
11. thefuck
Star:51.9k
这是一款由Python开发的命令行纠错工具。
Linux命令是在开发过程中经常接触的工具,当我们输入一长串命令,按下enter键之后怎么办?
这显然是比较低效的。thefuck提供了简单高效的解决方案,虽然它名称看上去粗俗了一些,但是的确好用,当输入命令错误之后,只需要在命令行下输入f**k即可显示更正后的命令,免得再去手动修改。
12. vulture
Star:791
vulture是一款无用代码查找、清理工具。
当我们开发一个项目过程中,会不断的对某些部分进行增删、修改,这个过程中会产生很多无用的引用和代码。当这个工程代码量逐渐增多时,我们用人眼挨个去寻找无用代码自然是不现实的。
vulture在Python程序中查找未使用的代码。这对于清理和查找大型代码库中的错误很有用。如果同时在库和测试套件上运行vulture,则可以找到未经测试的代码。
例如,我们新建一个code.py文件,
import osclass Greeter: def greet(self): print("Hi")def hello_world(): message = "Hello, world!" greeter = Greeter() greet_func = getattr(greeter, "greet") greet_func()if __name__ == "__main__": hello_world()
调用vulture,
> vulture code.pydead_code.py:1: unused import 'os' (90% confidence)dead_code.py:4: unused function 'greet' (60% confidence)dead_code.py:8: unused variable 'message' (60% confidence)
这样,就可以输出无用的引用、函数、变量,同时,会给出每一个判断的可信度。
此外,vulture还支持设置最小可信度、白名单等功能,这对于减少项目的冗余代码非常有用。
13. tushare
Star:8.8k
数据作为当前很多应用场景是至关重要的一环,例如,计算机视觉、数据分析,没有数据,后续的开发工作和算法准确性就无从谈起。 我们在kaggle、ImageNet能够找到很多开放的数据资源用于我们的开发和研究工具,但是,这些数据这些数据更过的是偏重于工业,更重要的它们都是静态数据,也就是说不能及时的对数据进行更新迭代。 金融是数据分析应用非常多的一个方向,也是和我们生活比较密切相关的一个方向,例如,股票等。 我个人是对金融数据分析非常感兴趣,有时候就在想从哪里可以获取到充足的数据支撑自己的研究?tushare就提供了很好的解决方案。 tushare是实现对股票/期货等金融数据从数据采集、清洗加工到数据存储过程的工具,满足金融量化分析师和学习数据分析的人在数据获取方面的需求,它的特点是数据覆盖范围广,接口调用简单,响应快速。
来看一个示例,
>>> import tushare as ts>>> ts.get_hist_data('600848')2020-02-07 20.76 20.93 20.88 20.56 59584.18 0.07 ... 20.738 22.474 23.577 70873.17 58742.91 60007.622020-02-06 20.76 20.97 20.81 20.41 67450.28 0.01 ... 21.280 22.873 23.763 70166.75 60894.69 60617.592020-02-05 20.04 21.37 20.80 20.04 96036.71 0.83 ... 21.944 23.270 23.950 63541.08 59984.14 61566.662020-02-04 19.11 20.78 19.97 19.11 117212.70 -1.26 ... 22.582 23.704 24.114 56576.79 61412.18 59378.582020-02-03 21.23 21.23 21.23 21.23 14082.00 -2.36 ... 23.522 24.165 24.303 40371.67 54241.10 55358.40
可以看到,通过一些简单的函数即可获取一直股票的最新数据。
tushare除了支持数据采集,还支持清洗加工和数据存储。
14. black
Start:14.9k
black是一款强大的Python代码格式化工具,通过使用black,可以解放双手,再也不用手动调整代码格式了。
black参照PEP格式规范,它能够格式化字符串、消除空行、修改代码长度等。另外,相对于大多数代码格式化工具,它具有更加快速、更见简便的优点,它能够让你在代码格式化方面节省更多时间和精力。
black的安装和使用也非常简单,下面来简单的介绍一下。
安装
pip install black
使用
black {source_file_or_directory}
下面来举一个例子,来看一下它的效果。
示例代码
# test.pyj = [1, 2, 3]def hello(): print("hello world")class One: pass
在命令行下运行下面命令,
black test.py
然后,来看一下格式化后的效果,
j = [1, 2, 3]def hello(): print("hello world")class One: pass
15. musicbox
Start:8.1k
musicbox是Python实现的网易云音乐命令行版本,支持320kbps的高品质音乐,当然,每日推荐、歌曲评论......这些功能也都支持,经常使用*nix系统系统的同学可以尝试一下。
安装
pip(3) install NetEase-MusicBox
使用
musicbox
目前已经通过测试支持的系统包括,macOS、Ubuntu、Kali、CentOS、openSUSE、Fedora、Arch,暂时不支持Windows。
16. nba_api
Start:604
nba_api是一个访问http://NBA.com的API工具包。
通过使用nba_api可以轻松获取球员、球队、比赛信息,如果你对想做数据分析,恰好又对NBA感兴趣,那么可以尝试一下这款Python小工具。
安装
pip install nba_api
示例
from nba_api.stats.static import playersplayers.find_players_by_first_name('lebron')# 输出[{'id': 2544, 'full_name': 'LeBron James', 'first_name': 'LeBron', 'last_name': 'James', 'is_active': True}]
17. akshare
Start:251
akshare是一个简单易用的金融数据接口库,实现了对股票、期货、期权、基金、外汇、债券、指数、数字货币等金融产品数据实时和历史数据、衍生数据采集、清洗、落地全流程的开源工具。
能够满足对数据分析师或者对金融感兴趣同学的需求,能够提供丰富的业务数据供开发、研究使用。
安装
pip install akshare --upgrade
示例
import akshare as akak.get_roll_yield_bar(type_method="date", var="RB", start_day="20180618", end_day="20180718", plot=True)
输出结果,
roll_yield near_by deferred2018-06-19 0.191289 RB1810 RB19012018-06-20 0.192123 RB1810 RB19012018-06-21 0.183304 RB1810 RB19012018-06-22 0.190642 RB1810 RB19012018-06-25 0.194838 RB1810 RB19012018-06-26 0.204314 RB1810 RB19012018-06-27 0.213667 RB1810 RB19012018-06-28 0.211701 RB1810 RB19012018-06-29 0.205892 RB1810 RB19012018-07-02 0.224809 RB1810 RB19012018-07-03 0.229198 RB1810 RB19012018-07-04 0.222853 RB1810 RB19012018-07-05 0.247187 RB1810 RB19012018-07-06 0.261259 RB1810 RB19012018-07-09 0.253283 RB1810 RB19012018-07-10 0.225832 RB1810 RB19012018-07-11 0.210659 RB1810 RB19012018-07-12 0.212805 RB1810 RB19012018-07-13 0.170282 RB1810 RB19012018-07-16 0.218066 RB1810 RB19012018-07-17 0.229768 RB1810 RB19012018-07-18 0.225529 RB1810 RB1901
18. helium
Start:1.2k
终于到本文的重头戏了,下面就来介绍一下Helium这款神器。
helium是一款基于 Selenium实现的网页自动化工具,它能够解放你的双手,让你实现日常各种网页的使用。
废话不多说,来先看一个示例,应该就明白它到底是干什么用的。
from helium import *start_chrome('google.com')write('helium selenium github')press(ENTER)click('mherrmann/helium')go_to('github.com/login')write('username', into='Username')write('password', into='Password')click('Sign in')kill_browser()
看一下具体的演示,
看了演示应该大概明白helium是干什么用的了,它能够实现网页端的各种自动化操作,例如,
- 启动浏览器
- 与浏览器交互
- 查找相关元素
- 等待元素出现
- ......
其中,较为常用的就是启动浏览器和浏览器交互,启动浏览器应该都明白,不需要多说,这里就来介绍一下与浏览器交互。
helium能够输入内容、敲击键盘、点击按钮、跳转、关闭等各种我们日常访问网页时常用的操作。
回想一下,我们平时浏览网页不也就是这些操作吗?只是,helium自动化实现了我们日常的操作。
也许看到这里很多同学还是认为,这有什么用啊?
我觉得这个可以发散一下思维,自己寻找一下应用场景,例如,
- 批量下载音乐
- 批量下载电影、电视剧
- 下载图片
- 快速填单
- 便捷访问日常网址
举个例子,假如你日常的工作就是在网站填写表格或者处理订单等重复性的工作,那么就可以写一个脚本,然后循环同样一个动作,自己就不用动手操作了。
19. pywinauto
Star:2k
在上一期我介绍了一款网页自动化工具helium,它能够实现网页端的很多重复性工作,的确大大提高了工作效率。
如果你的工作、学习内容不仅限于网页端、如果helium还不能满足你高效工作的需求。那么,pywinauto一定可以做到。
pywinauto是一款实现Windows GUI自动化的Python工具,它可以将鼠标和键盘操作发送到Windows对话框和控件。此外,它还支持更复杂的操作,例如获取文本数据。
安装:
pip install -U pywinauto
使用:
先写一段演示代码,
from pywinauto.application import Applicationapp = Application().start("notepad.exe")app.UntitledNotepad.menu_select("帮助->关于记事本")app.UntitledNotepad.Edit.type_keys("pywinauto Works!", with_spaces = True)
20. real-url
Star:256
real-url是一款解析流媒体直播源的Python工具包,目前支持21个直播平台:斗鱼直播、虎牙直播、哔哩哔哩直播、战旗直播、网易CC直播、火猫直播、企鹅电竞、YY直播、一直播、快手直播、花椒直播、映客直播、西瓜直播、触手直播、NOW直播、抖音直播,爱奇艺直播、酷狗直播、龙珠直播、PPS奇秀直播、六间房。
获取直播源地址之后可以在PotPlayer、VLC、flv.js等播放器进行播放。
使用:
可以直接从github下载代码zip包或者克隆代码,然后再命令行下执行对应的脚本即可。
不同的脚本对应不同的平台,例如,douyin.py对应抖音,douyu.py对应斗鱼,也就是说,我们需要哪个平台的直播源,就执行拼音对应的脚本即可。
当执行命令python [script.py]后,可以输入直播房间号或者链接即可获取直播链接,然后再PotPlayer打开链接即可。
下面看一下演示,
<hr>原创不易,给 @Jackpop
点个赞支持一下吧~ |
|