聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

分享100個有趣的python項目 值得收藏

來源:CSDN 時間:2023-02-07 10:11:37

Github上面有很多有趣的python項目,包括軟件、庫、教程、資源等。這次收集了其中比較受歡迎的100個,供大家參考。(內容比較多,建議收藏了再看!)

1、awesome-python-webapp:廖老師的 Python 入門教程中的實踐項目的代碼

2、Minos:一個基于 Tornado/MongoDB/Redis 的社區系統


(資料圖片僅供參考)

3、tushare:TuShare 是一個免費、開源的 Python 財經數據接口包,TuShare 文檔

4、beijing_bus:北京實時公交,可以顯示查詢的公交到達某站還需多久

5、luokr.com:Python Tornado 寫的開源網站——螺殼網,訪問,如圖:

6、ssbc:Python Django 寫的種子搜索網站——手撕包菜,如圖:

7、listen1:Listen 1 讓你用一個網頁就能聽到多個網站的在線音樂,支持各種平臺。如圖:

8、python-gems:有趣的 Pyhton 代碼片段集合

9、algorithm:老齊的 Python 算法教程

10、python-goose:Goose 用于文章提取器,提取中文內容的示例代碼:

>>> from goose import Goose>>> from goose.text import StopWordsChinese>>> url  = "http://www.bbc.co.uk/zhongwen/simp/chinese_news/2012/12/121210_hongkong_politics.shtml">>> g = Goose({"stopwords_class": StopWordsChinese})>>> article = g.extract(url=url)>>> print article.cleaned_text[:150]香港行政長官梁振英在各方壓力下就其大宅的違章建筑(僭建)問題到立法會接受質詢,并向香港民眾道歉。梁振英在星期二(12月10日)的答問大會開始之際在其演說中道歉,但強調他在違章建筑問題上沒有隱瞞的意圖和動機。一些親北京陣營議員歡迎梁振英道歉,且認為應能獲得香港民眾接受,但這些議員也質問梁振英有

11、mincss:Python 寫的用來找到 CSS 中沒有用到的代碼片段,并刪除。適用于:想要做一個頁面,但是不會寫 CSS 人。示例代碼如下:

#coding:utf-8#!/usr/bin/env pythonfrom __future__ import print_functionimport sys, ossys.path.insert(0, os.path.abspath("."))from mincss.processor import Processor# 這里改成想要參考的頁面URL = "http://localhost:9000/page.html"def run():    p = Processor()    p.process(URL)    # 輸出INlink的css的簡化前和簡化后的css代碼    print("INLINES ".ljust(79, "-"))    for each in p.inlines:        print("On line %s" % each.line)        print("- " * 40)        print("BEFORE")        print(each.before)        print("- " * 40)        print("AFTER:")        print(each.after)    # 輸出link引用的css的簡化前和簡化后的css代碼    print("LINKS ".ljust(79, "-"))    for each in p.links:        print("On href %s" % each.href)        print("- " * 40)        print("BEFORE")        print(each.before)        print("- " * 40)        print("AFTER:")        print(each.after)if __name__ == "__main__":    run()

12、KindleEar:這是一個運行在 Google App Engine(GAE) 上的 Kindle 個人推送服務應用,生成排版精美的雜志模式mobi/epub格式自動每天推送至您的 Kindle 或其他郵箱。

13、python-guide:Requests 庫的作者——kennethreitz,寫的 Python 入門教程。不單單是語法層面的,涵蓋項目結構、代碼風格,進階、工具等方方面面。雖然是英文版(中文翻譯版),但我這個英語渣都能看懂,你肯定也可以,快去看看吧,開卷有益。在線閱讀

14、flask-admin:我工作中需要寫一個微型的管理系統,用的就是這個框架。簡直快餐型,頁面都寫好了,只要設置好相關配置就可以跑起來了。唯一缺點就是文檔中的例子少,開發一些特定的需求需要自己看源碼,才能知道如何改。文檔,下面是我跑起來之后的樣子:

15、python-sdk:七牛云存儲 SDK。我自己在用他家的服務,上手簡單、有免費額度,可以用來做‘圖床’,同時,有了這個 SDK 可以寫一些好用的小工具。注意:圖床不能隨便用,我曾經就用超了,賬戶的錢能扣成負數!

16、superset:企業級的數據探索、展示平臺。功能很強大,可以用來做數據分析、展示。如下圖:

17、flaskbb:基于 Flask 框架做的論壇,功能有限,輕量級的論壇應用在線文檔,可以在這個項目上進行二次開發,實現更加復雜的功能。在線預覽

18、fuck-login:模擬登錄一些知名的網站,為了方便爬取需要登錄的網站。注意:控制爬蟲的爬取頻率!

19、Young:基于 Tornado 框架、MongoDB 數據庫,寫的功能豐富的社區項目。詳細的安裝步驟,適合學習如何創建社區類 Web App。在線預覽,項目運行效果圖:

20、textfilter:基于某 1w 詞敏感詞庫,用 Python 實現幾種不同的過濾方式。用于過濾敏感詞的實用模塊,示例代碼:

from filter import DFAFiltergfw = DFAFilter()gfw.parse("keywords")print "待過濾:售假人民幣 我操操操"print "過濾后:", gfw.filter("售假人民幣 我操操操", "*")test_first_character()# 運行結果# 待過濾:售假人民幣 我操操操# 過濾后: 售假幣

21、qrcode:Python 寫的生成動態、彩色、各式各樣的二維碼,詳細的中文文檔,通過 qrcode生成的二維碼樣式如下:

22、httpie:非常好用的命令行 HTTP 客戶端,cURL 的替代者,返回的結果支持高亮,提高了可讀性。用于調試接口、查看服務器返回的 HTTP 協議的信息。在線文檔,下面的是 cURL 和 httpie 的返回結果對比圖:

23、langid:用于識別輸入文本數據所屬的語種,目前支持 97 種語言識別。示例代碼:

import langidtext1 = "I am a coder and love data mining"text2 = "請注明作者和出處并保留聲明和聯系方式"print langid.classify(text1)print langid.classify(text2)# ("en", 0.9999957874458753)# ("zh", 1.0)

24、fake-useragent:偽裝瀏覽器身份,常用于爬蟲。這個項目的代碼很少,可以閱讀一下,看看 ua.random是如何返回隨機的瀏覽器身份的 ,示例代碼:

from fake_useragent import UserAgentua = UserAgent()ua.ie# Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US);ua.msie# Mozilla/5.0 (compatible; MSIE 10.0; Macintosh; Intel Mac OS X 10_7_3; Trident/6.0)"ua["Internet Explorer"]# Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)ua.opera# Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11ua.chrome# Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2"ua.google# Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13ua["google chrome"]# Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11ua.firefox# Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1ua.ff# Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1ua.safari# Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25# and the best one, random via real world browser usage statisticua.random

25、reddit:reddit.com 網站的源碼,通過這個項目,可以學習 Python 在構建大型項目中的使用、項目結構、代碼風格、Python 技巧的使用方法等。安裝教程

26、httpstat:httpstat 美化了 curl的結果,使得結果更加可讀。同時它無依賴、兼容 Python3、一共才 300 多行。還可以顯示 HTTP 請求的每個過程中消耗的時間,如下圖:

27、PyMySQL:純 Pyton 寫的 MySQL 庫,純 Python 的好處就是可以運行在任何裝有 Python 解釋器(CPython、PyPy、IronPython)的平臺上。相對于 MySQLdb 性能幾乎一樣,使用方法也一樣,但是 PyMySQL 安裝方法極其簡單——pip install PyMySQL,PyMySQL 使用示例代碼:

# 下面為例子需要的數據庫的建表語句CREATE TABLE `users` (    `id` int(11) NOT NULL AUTO_INCREMENT,    `email` varchar(255) COLLATE utf8_bin NOT NULL,    `password` varchar(255) COLLATE utf8_bin NOT NULL,    PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_binAUTO_INCREMENT=1 ;# -*- coding: utf-8 -*-import pymysql.cursors# 連接數據庫connection = pymysql.connect(host="localhost",                             user="user",                             password="passwd",                             db="db",                             charset="utf8mb4",                             cursorclass=pymysql.cursors.DictCursor)try:    with connection.cursor() as cursor:        # 創建一個新的紀錄(record)        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"        cursor.execute(sql, ("webmaster@python.org", "very-secret"))    # 連接不會自動提交,所以你想下面要調用 commit 方法,存儲對數據庫的改動    connection.commit()    with connection.cursor() as cursor:        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"        cursor.execute(sql, ("webmaster@python.org",))        # 獲取一條的紀錄(record)        result = cursor.fetchone()        print(result)  # 結果輸出:{"password": "very-secret", "id": 1}finally:    connection.close()  # 操作完數據庫一要記得調用 close 方法,關閉連接

28、flask-limiter:一個 Flask 的擴展庫,它可以根據訪問者的 IP 限制其訪問頻率、次數等。示例代碼如下:

from flask import Flaskfrom flask_limiter import Limiterfrom flask_limiter.util import get_remote_addressapp = Flask(__name__)limiter = Limiter(    app,    key_func=get_remote_address,    global_limits=["2 per minute", "1 per second"],)@app.route("/slow")@limiter.limit("1 per day")def slow():    return "24"@app.route("/fast")def fast():    return "42"@app.route("/ping")@limiter.exemptdef ping():    return "PONG"app.run()

29、ngrok:一個十分方便、好用的內網穿透工具,它可以把本地某個端口的服務,通過一個安全隧道,映射到公網的一個地址。同時它提供了一個 Web 頁面,展示了每個請求、響應的所有信息,便于調試本地的程序?;镜氖褂梅椒ㄈ缦拢?/p>

ngrok 協議 本地服務監聽的端口ngrok http 8000創建成功會返回公網地址,然后通過該地址就可以訪問到本地的服務。本地訪問 http://localhost:4040,就可以查看關于每個請求、響應的相關數據

30、glances:一個可以讓你一目了然你的系統情況(類 (h)top)的工具,它界面友好,安裝方便:pip install glances

31、saythanks.io:Kennethreitz 寫的一個簡單的網站(基于 Flask),用于向開源項目作者發送感謝郵件的 Web App。該項目結構簡單,可以用來學習大神是如何快速開發 Web 項目、方法、代碼風格、開發常用庫。而且該項目的意義也特別好:感謝開源項目的作者,愿開源社區越來越好,網站地址

32、locust:模擬用戶行為的負載測試工具,包含友好的 Web 頁面,如下圖:

33、jumpserver:Jumpserver 是一款由 Python 編寫開源的跳板機(是一類可作為跳板批量操作遠程設備的網絡設備)系統,實現了跳板機應有的功能?;?SSH 協議來管理,客戶端無需安裝 agent。支持常見 Linux 系統,效果如下:

34、sh:sh 是一個成熟,用于替代 subprocess,它允許你調用任何程序,就像它是一個函數,支持 Python2.6 - 3.5

from sh import ifconfigprint ifconfig("eth0")

35、fastText.py:fastText 簡而言之,就是把文檔中所有詞通過 lookup table 變成向量,取平均后直接用線性分類器得到分類結果。fastText 的實現

36、mongoaudit:強大的 MongoDB 滲透測試工具,用于發掘 MongoDB 漏洞、并提出改善方法。

安裝:pip install mongoaudit

運行:python mongoaudit

37、mycli:mycli 是一個帶語法高亮、自動補全的 MySQL 命令行客戶端工具。例如,連接數據庫方法:mycli -h localhost -u 用戶名 數據庫

38、python-fire:Fire 是 Google 開源的 Python 庫,可自動將您的代碼轉變成 CLI,無需您做任何額外工作。您不必定義參數,設置幫助信息,或者編寫定義代碼運行方式的 main 函數。相反,您只需從 main 模塊調用“Fire”函數,其余工作全部交由 Python Fire 來完成。示例代碼如下:

import fireclass Example(object):    def hello(self, name="world"):        """Says hello to the specified name."""        return "Hello {name}!".format(name=name)def main():    fire.Fire(Example)if __name__ == "__main__":    main()# 在終端中調用效果如下:$ ./example.py helloHello world!$ ./example.py hello DavidHello David!$ ./example.py hello --name=GoogleHello Google!

39、ngxtop:解析 nginx 訪問日志并格式化輸出有用的信息,可以用來實時了解你的服務器正在發生的情況。安裝命令 pip install ngxtop,輸出示例如下:

$ ngxtoprunning for 411 seconds, 64332 records processed: 156.60 req/secSummary:|   count |   avg_bytes_sent |   2xx |   3xx |   4xx |   5xx ||---------+------------------+-------+-------+-------+-------||   64332 |         2775.251 | 61262 |  2994 |    71 |     5 |Detailed:| request_path                             |   count |   avg_bytes_sent |   2xx |   3xx |   4xx |   5xx ||------------------------------------------+---------+------------------+-------+-------+-------+-------|| /abc/xyz/xxxx                            |   20946 |          434.693 | 20935 |     0 |    11 |     0 || /xxxxx.json                              |    5633 |         1483.723 |  5633 |     0 |     0 |     0 || /xxxxx/xxx/xxxxxxx                       |    3624 |         7830.236 |  3621 |     0 |     3 |     0 || /static/js/minified/utils.min.js         |    3031 |         1781.155 |  2104 |   927 |     0 |     0 |

40、algorithms:基本算法、數據結構的 Python 實現

.├── array│   ├── circular_counter.py│   └── ...├── backtrack│   ├── anagram.py│   └── ...├── bfs│   ├── shortest_distance_from_all_buildings.py│   └── word_ladder.py├── bit│   ├── count_ones.py│   └── ...│   └── traversal.py└── 等等

41、searx:分分鐘打造一個聚合的搜索引擎,使用簡單,部署方便。拓展方便,基于插件式的管理。演示地址

42、grequests:Rquests + Gevent 讓異步 HTTP 變得簡單、人性化。示例代碼:

>>> import grequests>>> def exception_handler(request, exception):...    print "Request failed">>> reqs = [...    grequests.get("http://httpbin.org/delay/1", timeout=0.001),...    grequests.get("http://fakedomain/"),...    grequests.get("http://httpbin.org/status/500")]>>> grequests.map(reqs, exception_handler=exception_handler)Request failedRequest failed[None, None, ]

43、explainshell:一個可以解析 Linux 命令的網站,它可以給出命令的解釋和其參數的解釋,例如:ps -aux|grep python,在線演示

44、certbot:免費的自動啟用和部署 HTTPS 的工具,讓你的網站開啟 HTTPS 變得簡單快捷。在部署教程頁面選擇服務器的操作系統和 Web 服務器,之后根據給出的步驟一步步的執行命令就行了,部署教程

45、musicbox:基于 Python 編寫的網易云音樂命令行版本,使用起來簡單優雅,能夠快速安裝及使用

46、django-blog-tutorial:基于最新版 Django 1.10 和 Python 3.5,通過 26 篇教程一步步帶你使用 Django 從零開發一個個人博客系統,在實踐的同時掌握 Django 的開發技巧,完成效果展示

47、aredis:一款基于 Python3 asyncio 的異步 redis 客戶端,支持對于單實例,連接池, 哨兵以及集群。作者希望可以找到志同道合的小伙伴集思廣益,一起維護、優化。示例代碼如下:

>>> import asyncio   >>> from aredis import StrictRedis   >>>   >>> async def example():   >>>      client = StrictRedis(host="127.0.0.1", port=6379, db=0)   >>>      await client.flushdb()   >>>      await client.set("foo", 1)   >>>      assert await client.exists("foo") is True   >>>      await client.incr("foo", 100)   >>>   >>>      assert int(await client.get("foo")) == 101   >>>      await client.expire("foo", 1)   >>>      await asyncio.sleep(0.1)   >>>      await client.ttl("foo")   >>>      await asyncio.sleep(1)   >>>      assert not await client.exists("foo")   >>>   >>> loop = asyncio.get_event_loop()   >>> loop.run_until_complete(example())

48、freezegun:時間漫步模塊,模擬到某一個時間,使用簡單方式多樣,實現了裝飾器、上下文等調用方式。示例代碼如下:

from freezegun import freeze_timeimport datetimeimport unittest@freeze_time("2012-01-14")def test():    assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)

49、LearnPython:這一個以”擼代碼“的形式學習 Python 的編程技巧的項目,針對 Python 的一些語法特性力求通過代碼例子解釋該知識點、同時還有一些實踐項目,通過動手實踐有助于知識的融會貫通。同時可以關注作者的知乎專欄學習更多的 Python 編程技巧

50、getproxy:極簡的抓取代理項目,無需配置。不僅提供了獲取代理腳本,同時可以通過該頁面,直接獲取可用代理(15min 更新、類型包含http和https)

51、syncPlaylist:在網易云音樂與 QQ 音樂之間同步歌單。易于使用、配置方便、代碼簡單,用到的技術:requests+ beautifulsoup以及 selenium+ phantomjs

52、GetSubtitles:通過拖曳視頻文件進終端,一步下載字幕 到視頻對應文件夾,并重命名字幕名稱為視頻名稱。Ubuntu 16.04、Windows 10上測試通過,同時兼容 Python2、3。Python 的魅力之一就是可以快速實現一個適合自己的小工具 Cool ??

53、huey:結合 redis 實現的輕量任務隊列,但是支持功能還是很多的:

多進程、多線程、協程

任務定時執行

任務執行失敗重試

結果存儲

54、simiki:一個簡單的個人 Wiki 框架,便于快速搭建 Wiki 頁。使用 Markdown 書寫 Wiki, 生成靜態 HTML 頁面。Wiki 源文件按目錄分類存放, 方便管理維護。中文文檔

55、pyecharts:Echarts+Python 實現的一個用于生成 Echarts 圖表的類庫

56、proxy_pool:基于 Python 的自建代理 IP 池服務,通過網絡爬蟲抓取互聯網上免費的代理 IP,本地校驗、剔除失效的代理IP,從而實現高可用的代理 IP 池。最后使用 Flask 搭建提供代理 IP 服務,包括代理池刷新、無效代理刪除、代理獲取等。該項目設計文檔詳細、模塊結構簡明易懂,同時適合爬蟲新手更好的學習爬蟲技術

57、WeiboSpider:分布式微博爬蟲,支持快速抓取和穩定抓取兩種運行模式。項目模塊邏輯清晰、注釋豐富、便于定制化自己的需求。同時,對于小白用戶,可以通過演示視頻快速入門,也提供QQ群答疑,已經持續維護一年多。靠譜的項目,小伙伴們要趕快上車~

58、pygorithm:一個幫助學習主要算法的庫,可以通過理解這些算法的實現,提高自己的算法水平。冒泡排序示例:

>>> from pygorithm.sorting import bubble_sort>>> my_list = [12, 4, 3, 5, 13, 1, 17, 19, 15]>>> sorted_list = bubble_sort.sort(my_list)>>> print(sorted_list)>>> [1, 3, 4, 5, 12, 13, 15, 17, 19]

59、newspaper:強大的提取 Web 的內容、文章的庫,支持多種語言,安裝命令 pip3 install newspaper3k。示例代碼:

>>> from newspaper import Article>>> url = "http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/">>> article = Article(url)>>> article.download()>>> article.html">> article.parse()>>> article.authors["Leigh Ann Caldwell", "John Honway"]>>> article.publish_datedatetime.datetime(2013, 12, 30, 0, 0)>>> article.text"Washington (CNN) -- Not everyone subscribes to a New Year"s resolution...">>> article.top_image"http://someCDN.com/blah/blah/blah/file.png">>> article.movies["http://youtube.com/path/to/link.com", ...]>>> from newspaper import Article>>> url = "http://www.bbc.co.uk/zhongwen/simp/chinese_news/2012/12/121210_hongkong_politics.shtml">>> a = Article(url, language="zh") # Chinese>>> a.download()>>> a.parse()>>> print(a.text[:150])香港行政長官梁振英在各方壓力下就其大宅的違章建筑(僭建)問題到立法會接受質詢,并向香港民眾道歉。梁振英在星期二(12月10日)的答問大會開始之際在其演說中道歉,但強調他在違章建筑問題上沒有隱瞞的意圖和動機。 一些親北京陣營議員歡迎梁振英道歉,且認為應能獲得香港民眾接受,但這些議員也質問梁振英有>>> print(a.title)港特首梁振英就住宅違建事件道歉

60、faker:用于生成假數據的庫,支持多種語言,你值得擁有。示例代碼:

fake.address()# "遼寧省雪市靜安廉街b座 998259"fake.street_address()# "巢湖街U座"fake.building_number()# "x座"fake.city_suffix()# "市"fake.latitude()# Decimal("-0.295126")fake.province()# "湖北省"

61、binlog2sql:從 MySQL binlog 解析出你要的 SQL。根據不同選項,提供如下功能

數據快速回滾,閃回原理與實踐

主從切換后新 master 丟數據的修復

從 binlog 生成標準SQL,帶來的衍生功能

62、pandas-tutorial:這套 pandas 教程包含從初級到進階的內容,適合初學者和希望進階建立知識體系的數據科學從業者閱讀。作者還在持續更新高級內容,你值得擁有

63、pysheeet:Python 速查表,在線閱讀

64、robobrowser:提供多種模擬操作網頁的庫,比如獲得網頁內容、訪問鏈接、點擊按鈕、填充并提交表單、上傳文件。使用簡單、API 友好。適用于想要通過腳本流程化操作,某些未提供這些操作接口的場景,示例代碼如下:

# 上傳文件from robobrowser import RoboBrowser# Browse to a page with an upload formbrowser = RoboBrowser()browser.open("http://cgi-lib.berkeley.edu/ex/fup.html")# Find the formupload_form = browser.get_form()upload_form                     # # Choose a file to uploadupload_form["upfile"]           # upload_form["upfile"].value = open("path/to/file.txt", "r")# Submitbrowser.submit(upload_form)

65、ItChat:開源的微信個人號SDK,提供了豐富的功能。從而使得 Python 調用微信、發送消息、傳輸文件等操作只需要編寫極少的代碼,示例代碼如下:

import itchatitchat.auto_login()itchat.send("Hello, filehelper", toUserName="filehelper")

66、records:Kenneth Reitz 大神的for Humans?系列,Records 是一個支持大多數主流關系數據庫的原生 SQL 查詢第三方庫。API 友好,使用簡單、支持命令行模式、功能多樣。與此同時該庫只有 500 行代碼,可以當作入門閱讀源碼的項目,同時學習大神的編程技巧與習慣,示例代碼如下:

import recordsdb = records.Database("postgres://...")  # 連接數據庫rows = db.query("select * from active_users")  # 執行原生 SQL# 遍歷結果for r in rows:    print(r.name, r.user_email)# 友好的 print 格式print(rows.dataset)# username|active|name      |user_email       |timezone# --------|------|----------|-----------------|--------------------------# model-t |True  |Henry Ford|model-t@gmail.com|2016-02-06 22:28:23.894202# 支持將結果導出成不同格式print(rows.export("json"))  # jsonprint(rows.export("csv"))  # csvprint(rows.export("yaml")) # yamlrows.export("df")  # pandas 的 df 對象with open("report.xls", "wb") as f:    f.write(rows.export("xls"))  # xls

67、zdict:方便的終端字典工具,支持多種字典和參數、翻譯結果高亮、以及交互模式查詢。安裝命令 pip install zdict(僅支持 Python3)。查詢效果如下圖所示:

68、joblib:使用 Python 方便的進行并行計算,示例代碼如下:

from joblib import Parallel, delayedfrom math import sqrtParallel(n_jobs=1)(delayed(sqrt)(i2) for i in range(10))

69、tldr-python-client:Linux man 解釋一般都太長了,很多時候我們就想用一些比較常用的命令,但卻記不起來。這個時候如果不 Google,就可以用 tldr(簡化 man 的工程)。該項目為 Python 客戶端實現

70、thefuck:在 Linux 命令行中,當你輸入的命令有錯誤后,直接輸入 fuck就可以自動執行修復后的命令,效果圖如下:

71、youtube-dl:強大的視頻下載工具,支持幾百個國內外主流視頻網站。正如名字一樣,最初是為了下載 youtube 上的視頻而開發的。如果有國外服務器的朋友,可以充分利用這個工具,下載 youtube 上的視頻,速度不要太爽。下面介紹安裝、下載視頻等命令:

# 1\. 安裝命令:sudo pip install youtube-dlInstalling collected packages: youtube-dlSuccessfully installed youtube-dl-2017.12.14# 2\. 查看 URL 支持格式:youtube-dl --list-formats URLformat code  extension  resolution note134          mp4        450x360    DASH video  449k , avc1.4d4015, 25fps, video only17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k36           3gp        300x240    small , mp4v.20.3, mp4a.40.218           mp4        450x360    medium , avc1.42001E, mp4a.40.2@ 96k43           webm       640x360    medium , vp8.0, vorbis@128k (best)# 3\. 選擇格式下載視頻:youtube-dl -f 18 URL (18為mp4 450x360格式)[youtube:playlist] Downloading playlist PLF90USSyuoYzPhhFG7XFBRn63Zvs--lNP - add --no-playlist to just download video JyLducMVYVg[youtube:playlist] PLF90USSyuoYzPhhFG7XFBRn63Zvs--lNP: Downloading webpage[download] Downloading playlist: 情滿四合院完整版[youtube:playlist] playlist 情滿四合院完整版: Downloading 42 videos[download] Downloading video 1 of 42...# 4\. 下載完成后,最后使用 https://github.com/houtianze/bypy 庫把下載的視頻同步到百度網盤上

72、jieba:強大的 Python 分詞庫,拿來直接用就好。示例代碼如下:

# encoding=utf-8import jiebaseg_list = jieba.cut("我來到北京清華大學", cut_all=True)print("Full Mode: " + "/ ".join(seg_list))  # 全模式seg_list = jieba.cut("我來到北京清華大學", cut_all=False)print("Default Mode: " + "/ ".join(seg_list))  # 精確模式seg_list = jieba.cut("他來到了網易杭研大廈")  # 默認是精確模式print(", ".join(seg_list))seg_list = jieba.cut_for_search("小明碩士畢業于中國科學院計算所,后在日本京都大學深造")  # 搜索引擎模式print(", ".join(seg_list))【全模式】: 我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學【精確模式】: 我/ 來到/ 北京/ 清華大學【新詞識別】:他, 來到, 了, 網易, 杭研, 大廈    (此處,“杭研”并沒有在詞典中,但是也被Viterbi算法識別出來了)【搜索引擎模式】: 小明, 碩士, 畢業, 于, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, 后, 在, 日本, 京都, 大學, 日本京都大學, 深造

73、pydu:該庫將平時常用的數據結構和工具都收錄其中,可供日常開發的使用,同時方便學習與借鑒,豐富的文檔能幫助新手更好的理解和使用它。這些實用的模塊都是來自于開源項目和貢獻者們的智慧,快來加入到這個項目中,讓它變得更加實用和豐富

74、shell-functools:把函數式的編程帶入 shell,從而讓很多事情變得簡單。通過 Python 的高階函數和內置模塊 os.path 與命令的管道結合,達到了強大、高效的功效。相比于單純的命令實現更加的直觀和容易理解,示例代碼如下:

示例 1# ls 查看當前目錄下的文件> ls document.txtfolderimage.jpg# 通過 map abspath 展示這些文件的絕對路徑> ls | map abspath/tmp/demo/document.txt/tmp/demo/folder/tmp/demo/image.jpg示例 2# find 命令找到的文件和目錄> find../folder./folder/me.jpg./folder/subdirectory./folder/subdirectory/song.mp3./document.txt./image.jpg# 把找到的結果中的文件,重命名在末尾追加 .bak (備份文件)> find | filter is_file | map basename | map append ".bak"me.jpg.baksong.mp3.bakdocument.txt.bakimage.jpg.bak

75、tqdm:強大、快速、易擴展的 Python 進度條庫。我想通過下面的示例代碼和效果展示圖,你會跑去給這個項目來個 Star 的

from tqdm import tqdmfor i in tqdm(range(10000)):    pass# 輸出結果:# 76%|████████████████████████████         | 7568/10000 [00:33<00:10, 229.00it/s]

76、HAipproxy:使用 Scrapy+Redis 實現的高可用分布式 IP 代理池,為大型分布式爬蟲提供高可用低延遲的代理 IP 資源。

from client.py_cli import ProxyFetcherargs = dict(host="127.0.0.1", port=6379, password="123456", db=0)# 這里`zhihu`的意思是,去和`zhihu`相關的代理ip校驗隊列中獲取ip# 這么做的原因是同一個代理IP對不同網站代理效果不同fetcher = ProxyFetcher("zhihu", strategy="greedy", redis_args=args)# 獲取一個可用代理print(fetcher.get_proxy())# 獲取可用代理列表print(fetcher.get_proxies()) # or print(fetcher.pool)

以知乎為目標抓取網站,該代理IP池的實際性能測試結果如下:

77、MovieHeavens:基于 Pyqt4 的電影天堂電影搜索工具,再也不用忍受各種廣告和點擊跳轉了

78、WechatSogou:基于搜狗微信搜索的微信公眾號爬蟲庫,極易上手。示例代碼:

import wechatsogouws_api = wechatsogou.WechatSogouAPI()ws_api.get_gzh_info("微信名稱")

79、Synonyms:中文近義詞工具包。支持自然語言理解的很多任務:文本對齊、推薦算法、相似度計算、語義偏移、關鍵字提取、概念提取、自動摘要、搜索引擎等。示例代碼如下:

import synonymssynonyms.seg("能量")

80、pook:模擬 HTTP 請求結果的庫,可用于單元測試等場景。采用裝飾器方式調用的示例代碼如下:

import pookimport requests@pook.get("http://httpbin.org/status/500", reply=204)@pook.get("http://httpbin.org/status/400", reply=200)def fetch(url):    return requests.get(url)res = fetch("http://httpbin.org/status/400")print("#1 status:", res.status_code)res = fetch("http://httpbin.org/status/500")print("#2 status:", res.status_code)

81、incubator-airflow:定時任務管理平臺,管理和調度各種離線定時任務,自帶 Web 管理界面。當定時任務量達到百級別的時候,就無法再使用 crontab 有效、方便地管理這些任務了。該項目就是為了解決了這個問題而誕生的

82、wtfpython:有趣、令人驚訝(坑爹)、鮮為人知的 Python 代碼片段集合。中文

83、redis-faina:Redis 性能分析器。提供兩種模式分析模式:命令實時、讀取日志。其原理是使用 Redis MONITOR 命令,將該命令的結果通過管道傳遞給 redis-faina 腳本,腳本將返回的信息解析,并匯成總成統計信息。具體信息如下所示:

注意:分析非常閑的 redis 實例時,分析的結果可能偏差的很多。時間單位為微秒:ms = 1.0 × 10^-6 secondsOverall Stats========================================# 總命令數Lines Processed   10# QPSCommands/Sec      1.03       # 出現最多的 key 的前綴Top Prefixes                           ========================================startchart   9 (90.00%)# 請求最多的keyTop Keys                                ========================================startchart:521xueweihan/hellogithub   9 (90.00%)# 請求最多的命令Top Commands                        ========================================get   9 (90.00%)# 請求響應時間的分布Command Time (microsecs)       ========================================Median   583914.075%      637395.090%      5703923.099%      5703923.0# 總耗時最多的命令Heaviest Commands (microsecs)========================================get   9746157.0# 慢請求列表Slowest Calls                             ========================================5703923.0   "get" "startchart:521xueweihan/hellogithub"637395.0    "get" "startchart:521xueweihan/hellogithub"633909.0    "get" "startchart:521xueweihan/hellogithub"583914.0    "get" "startchart:521xueweihan/hellogithub"569207.0    "get" "startchart:521xueweihan/hellogithub"548745.0    "get" "startchart:521xueweihan/hellogithub"545493.0    "get" "startchart:521xueweihan/hellogithub"523571.0    "get" "startchart:521xueweihan/hellogithub"

84、marshmallow:使用類似于 ORM 的語法,序列化、反序列化 Python 對象。可以將序列化的對象呈現為標準格式,適用于例如數據校驗、返回 HTTP API 的 JSON。示例代碼如下:

from datetime import datefrom marshmallow import Schema, fields, pprintclass ArtistSchema(Schema):    name = fields.Str()class AlbumSchema(Schema):    title = fields.Str()    release_date = fields.Date()    artist = fields.Nested(ArtistSchema())bowie = dict(name="David Bowie")album = dict(artist=bowie, title="Hunky Dory", release_date=date(1971, 12, 17))schema = AlbumSchema()result = schema.dump(album)pprint(result, indent=2)# 輸出如下# { "artist": {"name": "David Bowie"},#   "release_date": "1971-12-17",#   "title": "Hunky Dory"}

85、tenacity:使用該庫可以優雅地實現各種需求的重試。示例代碼如下:

from tenacity import retry, stop_after_attempt# 通過裝飾器,實現遇到異常重試3次@retry(stop=stop_after_attempt(3)) def get_data(url):    response = requests.get(url)    response_json = response.json()

86、unimatrix:模擬“黑客帝國”影片中的終端動畫腳本

87、pudb:基于控制臺的全屏 Python 可視化調試器。比 pdb 好用太多了,特性:

源碼語法高亮,棧、斷點、變量可見并且一直動態更新。變量展示還有很多可以定制化的功能。

基于鍵盤,簡單高效。支持 VI 的鼠標移動。還支持 PDB 的某些命令

支持查找源代碼,可以使用 m 代用 module browser 查看載入的模塊

斷點設置。鼠標移到某行代碼,按 b,然后可以在斷點窗口編輯斷點

88、Scylla:一款高質量的免費代理 IP 池工具,僅支持 Python 3.6。中文文檔,特性如下:

自動化的代理 IP 爬取與驗證

易用的 JSON API

簡單但美觀的 web 用戶界面,基于 TypeScript 和 React(例如,代理的地理分布)

最少僅用一行代碼即可與 Scrapy 和 requests 進行集成

等等

89、hue:開源的 Apache Hadoop UI 系統。通過使用 Hue 我們可以在瀏覽器端的 Web 控制臺上與 Hadoop 集群進行交互來分析處理數據。核心功能:

數據可視化

SQL 編輯器,支持 Hive、Impala、MySQL等

可進行 workflow 的編輯、查看

90、FeelUOwn:一個符合 Unix 哲學的跨平臺的音樂播放器,主要面向 Linux/macOS 用戶。特性:

安裝簡單,新手友好

默認提供國內各音樂平臺插件(網易云、蝦米、QQ)

較強的可擴展性可以滿足大家折騰的欲望

核心模塊有較好文檔和測試覆蓋

91、tinydb:TinyDB 是使用純 Python 編寫的 NoSQL 數據庫,使用 json 文件存儲數據。它區別于 SQLite 的關系性數據庫。同樣的小、不需要依賴外部服務器。適用于桌面程序、客戶端,不適用于 Web 應用、高性能的數據查詢。友好的 API,示例代碼:

>>> from tinydb import TinyDB, Query>>> db = TinyDB("path/to/db.json")>>> User = Query()>>> db.insert({"name": "John", "age": 22})>>> db.search(User.name == "John")[{"name": "John", "age": 22}]

92、TGmeetup:搜集、整理、展示、報名技術類線下聚會的命令行工具,讓使用者可以更加方便、及時的獲取技術類活動資訊

93、termtosvg:Python 寫的終端記錄器。通過命令 termtosvg運行該工具,然后在終端執行你要展示的命令,最終輸入 exit命令結束錄制,本地會生成一份 SVG 動畫,可用于分享、展示終端操作。效果如下:

94、cx-extractor-python:這是一個對網頁正文進行抽取的工具。cx-extractor 算法的 python 版本,改進了原有算法,使其支持中英文,對新聞類網頁正文抽取效果較好。示例代碼:

from crawler.cx_extractor_Python import  cx_extractor_Pythoncx = cx_extractor_Python()test_html = cx.getHtml("http://news.163.com/16/0101/10/BC84MRHS00014AED.html")content = cx.filter_tags(test_html)s = cx.getText(content)print(s)

95、awslogs:一個簡單的命令行工具,用于在本地查詢 Amazon CloudWatch 日志,強大的支持多實例日志匯總查看。簡單的查看命令:awslogs get /var/logs/syslog ALL -s1d

96、CUP:CUP 基礎庫是百度開源的 Python 語言基礎庫,致力將 DEV 從涉及底層操作、Util 操作類解放出來,使其更關注構建 service 上層業務邏輯。目前已涵蓋了構建一個服務的各個方面,大家可以從基礎庫的代碼結構、wiki、doc 中進行簡單了解。

cup    |-- cache.py                module              緩存相關模塊 ( Memory cache related module )    |-- decorators.py           module              python 修飾符,比如 @Singleton 單例模式 (Decorators of python)    |-- err.py                  module              異常 exception 類, Exception classes for CUP    |-- __init__.py             module              默認__init__.py, Default __init__.py    |-- log.py                  module              打印日志類,CUP 的打印日志比較簡潔、規范,設置統一、簡單(cup logging module)    |-- mail.py                 module              發送郵件 ( CUP Email module (send emails))    |-- net                     package             網絡相關操作( Network operations, such as net handler parameter tuning )    |-- oper.py                 module              一些混雜操作(Mixin operations)    |-- platforms.py            module              跨平臺、平臺相關操作函數(Cross-platform operations)    |-- res                     package             資源獲取、實時用量統計等,所有在 /prco 可獲得的系統資源、進程、設備等信息 ( Resource usage queries (in /proc)、Prcoess query、etc )    |-- shell                   package             命令 Shell 操作 pakcage ( Shell Operations、cross-hosts execution )    |-- services                package             構建服務支持的類(比如心跳、線程池 based 執行器等等) Heartbeat、Threadpool based executors、file service、etc    |-- thirdp                  package             第三方依賴純 Py 模塊( Third-party modules:pexpect、httplib2 )    |-- timeplus.py             module              時間相關的模塊(Time related module)    |-- unittest.py             module              單元測試支持模塊( Unittest、assert、noseClass )    |-- util                    package             線程池、可打斷線程、語義豐富的配置文件支持( ThreadPool、Interruptable-Thread、Rich configuration、etc )    |-- version.py              module              內部版本文件,CUP Version

97、supervisor:Python 開發的一個 C/S 服務,是 Linux/Unix 系統下的一個進程管理工具,不支持 Windows 系統。它可以很方便的監聽、啟動、停止、重啟一個或多個進程。用 Supervisor 管理的進程,當一個進程意外被殺死,supervisort 監聽到進程死后,會自動將它重新啟動,很方便的做到進程自動恢復的功能,提高系統、服務的穩定性,多用于生產環境

98、himawaripy:一個 Python3 腳本,它會定時(需設置定時任務)抓取由日本 Himawari 8 氣象衛星拍攝的接近實時的地球照片,并將它設置成你的桌面背景

99、loguru:一個讓 Python 記錄日志變得簡單的庫

100、weixin_crawler:基于 Scrapy、Flask、Echarts、Elasticsearch 等實現的微信公眾號文章爬蟲。自帶 UI 界面、分析報告、搜索功能

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 岛国精品在线