商汇粹外网资源平台

搜索
查看: 1644|回复: 5

Python有哪些高大上的项目?

[复制链接]

该用户从未签到

3

主题

6

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2022-10-22 10:41:18 | 显示全部楼层 |阅读模式
在知乎上看到了C++,Java有哪些高大上的项目的问题,最近在看Python,故此也来问下Python有哪些高大上的项目?


  • java有哪些高大上的项目?
  • C++ 有哪些高大上的项目?
  • 值得看的Python的开源项目有哪些?
  • Github上有什么值得学习,简单的,易读的Python项目?
回复

使用道具 举报

该用户从未签到

2

主题

43

帖子

149

积分

注册会员

Rank: 2

积分
149
发表于 2022-10-22 10:52:58 | 显示全部楼层
Pony ORM是我心中高大上的顶峰,官网链接
Pony ORM - Use Pure Python to Speak to Your Data

传统的ORM,需要你使用它提供的.query、.filter、.get之类的函数实现查询。而Pony ORM另辟蹊径,直接以generator expression,然后解析AST树的方式构造SQL语句。
举个例子:有一个Person表,需要查询其中age大于20的person。在Pony ORM里只需要
select(p for p in Person if p.age > 20)

够黑魔法吧?够高大上吧?
UPDATE:
是是是我知道这是类LINQ。人家用Python写了个lisp解释器,你来凑一句:这跟Schema也没啥区别嘛。
再UPDATE:
Cello • High Level Programming C PonyORM相当于做了这么个事情。
回复

使用道具 举报

该用户从未签到

0

主题

7

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 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
点个赞支持一下吧~
回复

使用道具 举报

该用户从未签到

4

主题

6

帖子

30

积分

新手上路

Rank: 1

积分
30
发表于 2022-10-22 11:16:18 | 显示全部楼层
shadowsocks
回复

使用道具 举报

该用户从未签到

0

主题

7

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2022-10-22 11:27:58 | 显示全部楼层
PyPy:用Python实现的Python
OpenStack:穷人的云计算
回复

使用道具 举报

该用户从未签到

2

主题

7

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2022-10-22 11:39:38 | 显示全部楼层
最高大上的难道不是已经成为 IaaS 事实标准的 OpenStack?
话说 thefuck 到底算不算高大上呢_(:3」∠)_
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表