扫一扫
关注 HG 公众号
发现更多开源乐趣

Python 项目

兴趣是最好的老师,HelloGitHub 就是帮你找到编程的兴趣。

labelImg

第 76 期 Star 18.1k Watch 368 Fork 5.5k
图形化界面的图像标注工具。用 Python 和 Qt 编写的图像标注桌面应用,简单方便下载就能用,适用于 Windows、Linux、macOS。标注数据支持 PASCAL VOC 格式的 XML 文件和 YOLO 的 txt 文件。
labelImg

pandas-profiling

第 76 期 Star 9.4k Watch 153 Fork 1.4k
能够自动生成 pandas DataFrame 分析报告的库。虽然 pandas 自带的 df.describe 函数可以方便地生成统计报告,但是信息较少。该项目能够自动生成一份 df 多维度的 HTML 分析报告,包含列的类型、缺失情况、数值分布、行重复率、占用内存大小等信息,有助于更好地了解数据情况。
pandas-profiling

MechanicalSoup

第 76 期 Star 4.1k Watch 107 Fork 378
自动与网站交互的轻量级 Python 库。我们写爬虫一般是请求+解析两步走,该项目将 Requests(请求) 和 BeautifulSoup(解析) 两大 Python 爬虫常用库,封装成一个浏览器对象(StatefulBrowser),将上面说的两步并成一步。后面仅需一个浏览器对象,就可以完成请求页面、过滤内容、提交表单、跳转地址等操作,使得代码更加简单、操作更加方便。又因为它不依赖浏览器进程,所以相较于 Selenium 它更加轻巧,但缺点是不支持 JS 动态渲染的页面。

import re
import mechanicalsoup

# Connect to Google
browser = mechanicalsoup.StatefulBrowser()
browser.open("https://www.google.com/")

# Fill-in the form
browser.select_form('form[action="/search"]')
browser["q"] = "MechanicalSoup"
# Note: the button name is btnK in the content served to actual
# browsers, but btnG for bots.
browser.submit_selected(btnName="btnG")

# Display links
for link in browser.links():
    target = link.attrs['href']
    # Filter-out unrelated links and extract actual URL from Google's
    # click-tracking.
    if (target.startswith('/url?') and not
            target.startswith("/url?q=http://webcache.googleusercontent.com")):
        target = re.sub(r"^/url\?q=([^&]*)&.*", r"\1", target)
        print(target)

MechanicalSoup

diagrams

第 76 期 Star 25.5k Watch 350 Fork 1.5k
用 Python 代码图解系统架构。程序员在做技术方案的时候,系统架构图是必不可少的。该项目将绘制架构图时所需的图标,封装成了对应的类极易调用,文档还提供了丰富的示例,让你分分钟就能上手,轻松用 Python 快速绘制出一份精美且清晰的架构图,这样不仅能省去拖拽调整连线的步骤,而且代码还可以复用,以便应对不断迭代升级的架构。

with Diagram("Advanced Web Service with On-Premise", show=False):
    ingress = Nginx("ingress")

    metrics = Prometheus("metric")
    metrics << Grafana("monitoring")

    with Cluster("Service Cluster"):
        grpcsvc = [
            Server("grpc1"),
            Server("grpc2"),
            Server("grpc3")]

    with Cluster("Sessions HA"):
        primary = Redis("session")
        primary - Redis("replica") << metrics
        grpcsvc >> primary

    with Cluster("Database HA"):
        primary = PostgreSQL("users")
        primary - PostgreSQL("replica") << metrics
        grpcsvc >> primary

    aggregator = Fluentd("logging")
    aggregator >> Kafka("stream") >> Spark("analytics")

    ingress >> grpcsvc >> aggregator

diagrams

orange3

第 76 期 Star 3.6k Watch 170 Fork 838
互动式数据分析桌面工具。一款面向不会编程人群的数据挖掘和数据可视化工具箱。内置多种图表类型、支持可视化编程,无需写代码即可做出简单、实用的数据分析软件,多用于教学和实验室等场景。
orange3

nonebot2

第 75 期 Star 2.3k Watch 22 Fork 275 中文
Python 异步聊天机器人框架。该项目基于 Python 的异步特性,可以轻松处理大量的消息。提供命令行脚手架、支持多种 IM 平台,能够快速构建聊天机器人、消息通知等项目。

$ pip install nb-cli
$ nb
[?] What do you want to do?
❯ Create a New Project
  Run the Bot in Current Folder
  Driver ->
  Adapter ->
  Plugin ->
  ...

DearPyGui

第 75 期 Star 8.5k Watch 133 Fork 442
强大的 Python GUI 库。底层采用 GPU 渲染提供了卓越的性能,内置多种现成的部件和样式控制,文档详细包含丰富的示例,可以轻松上手。

import dearpygui.dearpygui as dpg

def save_callback():
    print("Save Clicked")

dpg.create_context()
dpg.create_viewport()
dpg.setup_dearpygui()

with dpg.window(label="Example Window"):
    dpg.add_text("Hello world")
    dpg.add_button(label="Save", callback=save_callback)
    dpg.add_input_text(label="string")
    dpg.add_slider_float(label="float")

dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

DearPyGui

sqlfluff

第 75 期 Star 4.6k Watch 39 Fork 341
SQL 代码风格检查工具。编程语言的 linter 工具随处可见,但是少有 SQL 的工具。该项目就是用来检查、统一 SQL 代码风格的工具,支持 MySQL、BigQuery、Hive 等多种 SQL 方言。

$ pip install sqlfluff
$ echo "  SELECT a  +  b FROM tbl;  " > test.sql
$ sqlfluff lint test.sql --dialect ansi
== [test.sql] FAIL
L:   1 | P:   1 | L050 | Files must not begin with newlines or whitespace.
L:   1 | P:   3 | L003 | First line has unexpected indent
L:   1 | P:  11 | L039 | Unnecessary whitespace found.
L:   1 | P:  14 | L039 | Unnecessary whitespace found.
L:   1 | P:  27 | L001 | Unnecessary trailing whitespace.

kopf

第 75 期 Star 1.2k Watch 19 Fork 91
用 Python 操作 Kubernetes 的框架。Kubernetes(k8s) 是一个容器编排系统,它本身提供了命令行工具(kubectl),但有时无法实现较为复杂的操作。通过该项目可以用 Python 轻松完成,需要条件判断、事件触发等复杂的 k8s 操作。

import kopf

@kopf.timer('kopfexamples', interval=1)
def my_timer(spec, **kwargs):
    print(f"Object's spec: {spec}")

kopf

OneForAll

第 74 期 Star 5.3k Watch 89 Fork 985 中文
功能强大的子域收集工具。具有强大的子域收集能力、支持子域验证、速度快等特点的子域扫描工具
OneForAll