↑ 關注 + 星標 ,後臺回覆【大禮包】送你Python自學大禮css
交流羣,速進!
html
Github上面有不少有趣的python項目,包括軟件、庫、教程、資源等。此次收集了其中比較受歡迎的100個,供你們參考。python
資料來源:https://github.com/521xueweihan/HelloGitHub
❞
一、awesome-python-webapp:廖老師的 Python 入門教程中的實踐項目的代碼mysql
二、Minos:一個基於 Tornado/MongoDB/Redis 的社區系統nginx
三、tushare:TuShare 是一個免費、開源的 Python 財經數據接口包,TuShare 文檔git
![](http://static.javashuo.com/static/loading.gif)
四、beijing_bus:北京實時公交,能夠顯示查詢的公交到達某站還需多久github
![](http://static.javashuo.com/static/loading.gif)
五、luokr.com:Python Tornado 寫的開源網站——螺殼網,訪問,如圖:web
![](http://static.javashuo.com/static/loading.gif)
六、ssbc:Python Django 寫的種子搜索網站——手撕包菜,如圖:redis
![](http://static.javashuo.com/static/loading.gif)
七、listen1:Listen 1 讓你用一個網頁就能聽到多個網站的在線音樂,支持各類平臺。如圖:算法
![](http://static.javashuo.com/static/loading.gif)
八、python-gems:有趣的 Pyhton 代碼片斷集合
九、algorithm:老齊的 Python 算法教程
十、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日)的答問大會開始之際在其演說中道歉,但強調他在違章建築問題上沒有隱瞞的意圖和動機。
一些親北京陣營議員歡迎梁振英道歉,且認爲應能得到香港民衆接受,但這些議員也質問梁振英有
十一、mincss:Python 寫的用來找到 CSS 中沒有用到的代碼片斷,並刪除。適用於:想要作一個頁面,可是不會寫 CSS 人。示例代碼以下:
#coding:utf-8
#!/usr/bin/env python
from __future__ import print_function
import sys, os
sys.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()
十二、KindleEar:這是一個運行在 Google App Engine(GAE) 上的 Kindle 我的推送服務應用,生成排版精美的雜誌模式mobi/epub
格式自動天天推送至您的 Kindle 或其餘郵箱。
1三、python-guide:Requests 庫的做者——kennethreitz,寫的 Python 入門教程。不僅僅是語法層面的,涵蓋項目結構、代碼風格,進階、工具等方方面面。雖然是英文版(中文翻譯版),但我這個英語渣都能看懂,你確定也能夠,快去看看吧,開卷有益。在線閱讀
1四、flask-admin:我工做中須要寫一個微型的管理系統,用的就是這個框架。簡直快餐型,頁面都寫好了,只要設置好相關配置就能夠跑起來了。惟一缺點就是文檔中的例子少,開發一些特定的需求須要本身看源碼,才能知道如何改。文檔,下面是我跑起來以後的樣子:
![](http://static.javashuo.com/static/loading.gif)
1五、python-sdk:七牛雲存儲 SDK。我本身在用他家的服務,上手簡單、有免費額度,能夠用來作‘圖牀’,同時,有了這個 SDK 能夠寫一些好用的小工具。注意:圖牀不能隨便用,我曾經就用超了,帳戶的錢能扣成負數!
1六、superset:企業級的數據探索、展現平臺。功能很強大,能夠用來作數據分析、展現。以下圖:
![](http://static.javashuo.com/static/loading.gif)
1七、flaskbb:基於 Flask 框架作的論壇,功能有限,輕量級的論壇應用在線文檔,能夠在這個項目上進行二次開發,實現更加複雜的功能。在線預覽
![](http://static.javashuo.com/static/loading.gif)
1八、fuck-login:模擬登陸一些知名的網站,爲了方便爬取須要登陸的網站。注意:控制爬蟲的爬取頻率!
1九、Young:基於 Tornado 框架、MongoDB 數據庫,寫的功能豐富的社區項目。詳細的安裝步驟,適合學習如何建立社區類 Web App。在線預覽,項目運行效果圖:
![](http://static.javashuo.com/static/loading.gif)
20、textfilter:基於某 1w 詞敏感詞庫,用 Python 實現幾種不一樣的過濾方式。用於過濾敏感詞的實用模塊,示例代碼:
from filter import DFAFilter
gfw = DFAFilter()
gfw.parse("keywords")
print "待過濾:售假人民幣 我操操操"
print "過濾後:", gfw.filter("售假人民幣 我操操操", "*")
test_first_character()
# 運行結果
# 待過濾:售假人民幣 我操操操
# 過濾後: 售假幣
2一、qrcode:Python 寫的生成動態、彩色、各式各樣的二維碼,詳細的中文文檔,經過 qrcode
生成的二維碼樣式以下:
![](http://static.javashuo.com/static/loading.gif)
2二、httpie:很是好用的命令行 HTTP 客戶端,cURL 的替代者,返回的結果支持高亮,提升了可讀性。用於調試接口、查看服務器返回的 HTTP 協議的信息。在線文檔,下面的是 cURL 和 httpie 的返回結果對比圖:
![](http://static.javashuo.com/static/loading.gif)
2三、langid:用於識別輸入文本數據所屬的語種,目前支持 97 種語言識別。示例代碼:
import langid
text1 = "I am a coder and love data mining"
text2 = "請註明做者和出處並保留聲明和聯繫方式"
print langid.classify(text1)
print langid.classify(text2)
# ('en', 0.9999957874458753)
# ('zh', 1.0)
2四、fake-useragent:假裝瀏覽器身份,經常使用於爬蟲。這個項目的代碼不多,能夠閱讀一下,看看 ua.random
是如何返回隨機的瀏覽器身份的 ,示例代碼:
from fake_useragent import UserAgent
ua = 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.11
ua.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.13
ua['google chrome']
# Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11
ua.firefox
# Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1
ua.ff
# Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1
ua.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 statistic
ua.random
2五、reddit:reddit.com 網站的源碼,經過這個項目,能夠學習 Python 在構建大型項目中的使用、項目結構、代碼風格、Python 技巧的使用方法等。安裝教程
![](http://static.javashuo.com/static/loading.gif)
2六、httpstat:httpstat 美化了 curl
的結果,使得結果更加可讀。同時它無依賴、兼容 Python三、一共才 300 多行。還能夠顯示 HTTP 請求的每一個過程當中消耗的時間,以下圖:
![](http://static.javashuo.com/static/loading.gif)
2七、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_bin
AUTO_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 方法,關閉鏈接
2八、flask-limiter:一個 Flask 的擴展庫,它能夠根據訪問者的 IP 限制其訪問頻率、次數等。示例代碼以下:
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
app = 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.exempt
def ping():
return 'PONG'
app.run()
2九、ngrok:一個十分方便、好用的內網穿透工具,它能夠把本地某個端口的服務,經過一個安全隧道,映射到公網的一個地址。同時它提供了一個 Web 頁面,展現了每一個請求、響應的全部信息,便於調試本地的程序。基本的使用方法以下:
ngrok 協議 本地服務監聽的端口
ngrok http 8000
建立成功會返回公網地址,而後經過該地址就能夠訪問到本地的服務。
本地訪問 http://localhost:4040,就能夠查看關於每一個請求、響應的相關數據
![](http://static.javashuo.com/static/loading.gif)
30、glances:一個可讓你一目瞭然你的系統狀況(類 (h)top)的工具,它界面友好,安裝方便:pip install glances
![](http://static.javashuo.com/static/loading.gif)
3一、saythanks.io:Kennethreitz 寫的一個簡單的網站(基於 Flask),用於向開源項目做者發送感謝郵件的 Web App。該項目結構簡單,能夠用來學習大神是如何快速開發 Web 項目、方法、代碼風格、開發經常使用庫。並且該項目的意義也特別好:感謝開源項目的做者,願開源社區愈來愈好,網站地址
![](http://static.javashuo.com/static/loading.gif)
3二、locust:模擬用戶行爲的負載測試工具,包含友好的 Web 頁面,以下圖:
![](http://static.javashuo.com/static/loading.gif)
3三、jumpserver:Jumpserver 是一款由 Python 編寫開源的跳板機(是一類可做爲跳板批量操做遠程設備的網絡設備)系統,實現了跳板機應有的功能。基於 SSH 協議來管理,客戶端無需安裝 agent。支持常見 Linux 系統,效果以下:
![](http://static.javashuo.com/static/loading.gif)
3四、sh:sh 是一個成熟,用於替代 subprocess,它容許你調用任何程序,就像它是一個函數,支持 Python2.6 - 3.5
from sh import ifconfig
print ifconfig("eth0")
3五、fastText.py:fastText 簡而言之,就是把文檔中全部詞經過 lookup table 變成向量,取平均後直接用線性分類器獲得分類結果。fastText 的實現
3六、mongoaudit:強大的 MongoDB 滲透測試工具,用於發掘 MongoDB 漏洞、並提出改善方法。
-
安裝: pip install mongoaudit
-
運行: python mongoaudit
3七、mycli:mycli 是一個帶語法高亮、自動補全的 MySQL 命令行客戶端工具。例如,鏈接數據庫方法:mycli -h localhost -u 用戶名 數據庫
![](http://static.javashuo.com/static/loading.gif)
3八、python-fire:Fire 是 Google 開源的 Python 庫,可自動將您的代碼轉變成 CLI,無需您作任何額外工做。您沒必要定義參數,設置幫助信息,或者編寫定義代碼運行方式的 main 函數。相反,您只需從 main 模塊調用「Fire」函數,其他工做所有交由 Python Fire 來完成。示例代碼以下:
import fire
class 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 hello
Hello world!
$ ./example.py hello David
Hello David!
$ ./example.py hello --name=Google
Hello Google!
3九、ngxtop:解析 nginx 訪問日誌並格式化輸出有用的信息,能夠用來實時瞭解你的服務器正在發生的狀況。安裝命令 pip install ngxtop
,輸出示例以下:
$ ngxtop
running for 411 seconds, 64332 records processed: 156.60 req/sec
Summary:
| 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
└── 等等
4一、searx:分分鐘打造一個聚合的搜索引擎,使用簡單,部署方便。拓展方便,基於插件式的管理。演示地址
4二、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 failed
Request failed
[None, None, <Response [500]>]
4三、explainshell:一個能夠解析 Linux 命令的網站,它能夠給出命令的解釋和其參數的解釋,例如:ps -aux|grep python
,在線演示
![](http://static.javashuo.com/static/loading.gif)
4四、certbot:免費的自動啓用和部署 HTTPS 的工具,讓你的網站開啓 HTTPS 變得簡單快捷。在部署教程頁面選擇服務器的操做系統和 Web 服務器,以後根據給出的步驟一步步的執行命令就好了,部署教程
![](http://static.javashuo.com/static/loading.gif)
4五、musicbox:基於 Python 編寫的網易雲音樂命令行版本,使用起來簡單優雅,可以快速安裝及使用
![](http://static.javashuo.com/static/loading.gif)
4六、django-blog-tutorial:基於最新版 Django 1.10 和 Python 3.5,經過 26 篇教程一步步帶你使用 Django 從零開發一個我的博客系統,在實踐的同時掌握 Django 的開發技巧,完成效果展現
4七、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())
4八、freezegun:時間漫步模塊,模擬到某一個時間,使用簡單方式多樣,實現了裝飾器、上下文等調用方式。示例代碼以下:
from freezegun import freeze_time
import datetime
import unittest
@freeze_time("2012-01-14")
def test():
assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)
4九、LearnPython:這一個以」擼代碼「的形式學習 Python 的編程技巧的項目,針對 Python 的一些語法特性力求經過代碼例子解釋該知識點、同時還有一些實踐項目,經過動手實踐有助於知識的融會貫通。同時能夠關注做者的知乎專欄學習更多的 Python 編程技巧
50、getproxy:極簡的抓取代理項目,無需配置。不只提供了獲取代理腳本,同時能夠經過該頁面,直接獲取可用代理(15min 更新、類型包含http和https)
5一、syncPlaylist:在網易雲音樂與 QQ 音樂之間同步歌單。易於使用、配置方便、代碼簡單,用到的技術:requests
+ beautifulsoup
以及 selenium
+ phantomjs
5二、GetSubtitles:經過拖曳視頻文件進終端,一步下載字幕 到視頻對應文件夾,並重命名字幕名稱爲視頻名稱。Ubuntu 16.0四、Windows 10上測試經過,同時兼容 Python二、3。Python 的魅力之一就是能夠快速實現一個適合本身的小工具 Cool ✌️
![](http://static.javashuo.com/static/loading.gif)
5三、huey:結合 redis 實現的輕量任務隊列,可是支持功能仍是不少的:
-
多進程、多線程、協程 -
任務定時執行 -
任務執行失敗重試 -
結果存儲
5四、simiki:一個簡單的我的 Wiki 框架,便於快速搭建 Wiki 頁。使用 Markdown 書寫 Wiki, 生成靜態 HTML 頁面。Wiki 源文件按目錄分類存放, 方便管理維護。中文文檔
5五、pyecharts:Echarts+Python 實現的一個用於生成 Echarts 圖表的類庫
![](http://static.javashuo.com/static/loading.gif)
5六、proxy_pool:基於 Python 的自建代理 IP 池服務,經過網絡爬蟲抓取互聯網上免費的代理 IP,本地校驗、剔除失效的代理IP,從而實現高可用的代理 IP 池。最後使用 Flask 搭建提供代理 IP 服務,包括代理池刷新、無效代理刪除、代理獲取等。該項目設計文檔詳細、模塊結構簡明易懂,同時適合爬蟲新手更好的學習爬蟲技術
![](http://static.javashuo.com/static/loading.gif)
5七、WeiboSpider:分佈式微博爬蟲,支持快速抓取和穩定抓取兩種運行模式。項目模塊邏輯清晰、註釋豐富、便於定製化本身的需求。同時,對於小白用戶,能夠經過演示視頻快速入門,也提供QQ羣答疑,已經持續維護一年多。靠譜的項目,小夥伴們要趕快上車~
![](http://static.javashuo.com/static/loading.gif)
5八、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]
5九、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
'<!DOCTYPE HTML><html itemscope itemtype="http://...'
>>> article.parse()
>>> article.authors
['Leigh Ann Caldwell', 'John Honway']
>>> article.publish_date
datetime.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()
# '湖北省'
6一、binlog2sql:從 MySQL binlog 解析出你要的 SQL。根據不一樣選項,提供以下功能
-
數據快速回滾,閃回原理與實踐 -
主從切換後新 master 丟數據的修復 -
從 binlog 生成標準SQL,帶來的衍生功能
6二、pandas-tutorial:這套 pandas 教程包含從初級到進階的內容,適合初學者和但願進階創建知識體系的數據科學從業者閱讀。做者還在持續更新高級內容,你值得擁有
6三、pysheeet:Python 速查表,在線閱讀
6四、robobrowser:提供多種模擬操做網頁的庫,好比得到網頁內容、訪問連接、點擊按鈕、填充並提交表單、上傳文件。使用簡單、API 友好。適用於想要經過腳本流程化操做,某些未提供這些操做接口的場景,示例代碼以下:
# 上傳文件
from robobrowser import RoboBrowser
# Browse to a page with an upload form
browser = RoboBrowser()
browser.open('http://cgi-lib.berkeley.edu/ex/fup.html')
# Find the form
upload_form = browser.get_form()
upload_form # <RoboForm upfile=, note=>
# Choose a file to upload
upload_form['upfile'] # <robobrowser.forms.fields.FileInput...>
upload_form['upfile'].value = open('path/to/file.txt', 'r')
# Submit
browser.submit(upload_form)
6五、ItChat:開源的微信我的號SDK,提供了豐富的功能。從而使得 Python 調用微信、發送消息、傳輸文件等操做只須要編寫極少的代碼,示例代碼以下:
import itchat
itchat.auto_login()
itchat.send('Hello, filehelper', toUserName='filehelper')
6六、records:Kenneth Reitz 大神的for Humans™
系列,Records 是一個支持大多數主流關係數據庫的原生 SQL 查詢第三方庫。API 友好,使用簡單、支持命令行模式、功能多樣。與此同時該庫只有 500 行代碼,能夠看成入門閱讀源碼的項目,同時學習大神的編程技巧與習慣,示例代碼以下:
import records
db = 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')) # json
print(rows.export('csv')) # csv
print(rows.export('yaml')) # yaml
rows.export('df') # pandas 的 df 對象
with open('report.xls', 'wb') as f:
f.write(rows.export('xls')) # xls
6七、zdict:方便的終端字典工具,支持多種字典和參數、翻譯結果高亮、以及交互模式查詢。安裝命令 pip install zdict
(僅支持 Python3)。查詢效果以下圖所示:
![](http://static.javashuo.com/static/loading.gif)
6八、joblib:使用 Python 方便的進行並行計算,示例代碼以下:
from joblib import Parallel, delayed
from math import sqrt
Parallel(n_jobs=1)(delayed(sqrt)(i2) for i in range(10))
6九、tldr-python-client:Linux man 解釋通常都太長了,不少時候咱們就想用一些比較經常使用的命令,但卻記不起來。這個時候若是不 Google,就能夠用 tldr(簡化 man 的工程)。該項目爲 Python 客戶端實現
70、thefuck:在 Linux 命令行中,當你輸入的命令有錯誤後,直接輸入 fuck
就能夠自動執行修復後的命令,效果圖以下:
![](http://static.javashuo.com/static/loading.gif)
7一、youtube-dl:強大的視頻下載工具,支持幾百個國內外主流視頻網站。正如名字同樣,最初是爲了下載 youtube 上的視頻而開發的。若是有國外服務器的朋友,能夠充分利用這個工具,下載 youtube 上的視頻,速度不要太爽。下面介紹安裝、下載視頻等命令:
# 1\. 安裝命令:sudo pip install youtube-dl
Installing collected packages: youtube-dl
Successfully installed youtube-dl-2017.12.14
# 2\. 查看 URL 支持格式:youtube-dl --list-formats URL
format code extension resolution note
134 mp4 450x360 DASH video 449k , avc1.4d4015, 25fps, video only
17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k
36 3gp 300x240 small , mp4v.20.3, mp4a.40.2
18 mp4 450x360 medium , avc1.42001E, mp4a.40.2@ 96k
43 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 庫把下載的視頻同步到百度網盤上
7二、jieba:強大的 Python 分詞庫,拿來直接用就好。示例代碼以下:
# encoding=utf-8
import jieba
seg_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算法識別出來了)
【搜索引擎模式】: 小明, 碩士, 畢業, 於, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, 後, 在, 日本, 京都, 大學, 日本京都大學, 深造
7三、pydu:該庫將平時經常使用的數據結構和工具都收錄其中,可供平常開發的使用,同時方便學習與借鑑,豐富的文檔能幫助新手更好的理解和使用它。這些實用的模塊都是來自於開源項目和貢獻者們的智慧,快來加入到這個項目中,讓它變得更加實用和豐富
7四、shell-functools:把函數式的編程帶入 shell,從而讓不少事情變得簡單。經過 Python 的高階函數和內置模塊 os.path 與命令的管道結合,達到了強大、高效的功效。相比於單純的命令實現更加的直觀和容易理解,示例代碼以下:
示例 1
# ls 查看當前目錄下的文件
> ls
document.txt
folder
image.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.bak
song.mp3.bak
document.txt.bak
image.jpg.bak
7五、tqdm:強大、快速、易擴展的 Python 進度條庫。我想經過下面的示例代碼和效果展現圖,你會跑去給這個項目來個 Star 的
from tqdm import tqdm
for i in tqdm(range(10000)):
pass
# 輸出結果:
# 76%|████████████████████████████ | 7568/10000 [00:33<00:10, 229.00it/s]
![](http://static.javashuo.com/static/loading.gif)
7六、HAipproxy:使用 Scrapy+Redis 實現的高可用分佈式 IP 代理池,爲大型分佈式爬蟲提供高可用低延遲的代理 IP 資源。
from client.py_cli import ProxyFetcher
args = 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池的實際性能測試結果以下:
![](http://static.javashuo.com/static/loading.gif)
7七、MovieHeavens:基於 Pyqt4 的電影天堂電影搜索工具,不再用忍受各類廣告和點擊跳轉了
![](http://static.javashuo.com/static/loading.gif)
7八、WechatSogou:基於搜狗微信搜索的微信公衆號爬蟲庫,極易上手。示例代碼:
import wechatsogou
ws_api = wechatsogou.WechatSogouAPI()
ws_api.get_gzh_info('微信名稱')
7九、Synonyms:中文近義詞工具包。支持天然語言理解的不少任務:文本對齊、推薦算法、類似度計算、語義偏移、關鍵字提取、概念提取、自動摘要、搜索引擎等。示例代碼以下:
import synonyms
synonyms.seg("能量")
![](http://static.javashuo.com/static/loading.gif)
80、pook:模擬 HTTP 請求結果的庫,可用於單元測試等場景。採用裝飾器方式調用的示例代碼以下:
import pook
import 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)
8一、incubator-airflow:定時任務管理平臺,管理和調度各類離線定時任務,自帶 Web 管理界面。當定時任務量達到百級別的時候,就沒法再使用 crontab 有效、方便地管理這些任務了。該項目就是爲了解決了這個問題而誕生的
![](http://static.javashuo.com/static/loading.gif)
8二、wtfpython:有趣、使人驚訝(坑爹)、不爲人知的 Python 代碼片斷集合。中文
8三、redis-faina:Redis 性能分析器。提供兩種模式分析模式:命令實時、讀取日誌。其原理是使用 Redis MONITOR 命令,將該命令的結果經過管道傳遞給 redis-faina 腳本,腳本將返回的信息解析,並匯成總成統計信息。具體信息以下所示:
注意:分析很是閒的 redis 實例時,分析的結果可能誤差的不少。
時間單位爲微秒:ms = 1.0 × 10^-6 seconds
Overall Stats
========================================
# 總命令數
Lines Processed 10
# QPS
Commands/Sec 1.03
# 出現最多的 key 的前綴
Top Prefixes
========================================
startchart 9 (90.00%)
# 請求最多的key
Top Keys
========================================
startchart:521xueweihan/hellogithub 9 (90.00%)
# 請求最多的命令
Top Commands
========================================
get 9 (90.00%)
# 請求響應時間的分佈
Command Time (microsecs)
========================================
Median 583914.0
75% 637395.0
90% 5703923.0
99% 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"
8四、marshmallow:使用相似於 ORM 的語法,序列化、反序列化 Python 對象。能夠將序列化的對象呈現爲標準格式,適用於例如數據校驗、返回 HTTP API 的 JSON。示例代碼以下:
from datetime import date
from marshmallow import Schema, fields, pprint
class 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'}
8五、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()
8六、unimatrix:模擬「黑客帝國」影片中的終端動畫腳本
![](http://static.javashuo.com/static/loading.gif)
8七、pudb:基於控制檯的全屏 Python 可視化調試器。比 pdb 好用太多了,特性:
-
源碼語法高亮,棧、斷點、變量可見而且一直動態更新。變量展現還有不少能夠定製化的功能。 -
基於鍵盤,簡單高效。支持 VI 的鼠標移動。還支持 PDB 的某些命令 -
支持查找源代碼,可使用 m 代用 module browser 查看載入的模塊 -
斷點設置。鼠標移到某行代碼,按 b,而後能夠在斷點窗口編輯斷點
![](http://static.javashuo.com/static/loading.gif)
8八、Scylla:一款高質量的免費代理 IP 池工具,僅支持 Python 3.6。中文文檔,特性以下:
-
自動化的代理 IP 爬取與驗證 -
易用的 JSON API -
簡單但美觀的 web 用戶界面,基於 TypeScript 和 React(例如,代理的地理分佈) -
最少僅用一行代碼便可與 Scrapy 和 requests 進行集成 -
等等
8九、hue:開源的 Apache Hadoop UI 系統。經過使用 Hue 咱們能夠在瀏覽器端的 Web 控制檯上與 Hadoop 集羣進行交互來分析處理數據。核心功能:
-
數據可視化 -
SQL 編輯器,支持 Hive、Impala、MySQL等 -
可進行 workflow 的編輯、查看
![](http://static.javashuo.com/static/loading.gif)
90、FeelUOwn:一個符合 Unix 哲學的跨平臺的音樂播放器,主要面向 Linux/macOS 用戶。特性:
-
安裝簡單,新手友好 -
默認提供國內各音樂平臺插件(網易雲、蝦米、QQ) -
較強的可擴展性能夠知足你們折騰的慾望 -
核心模塊有較好文檔和測試覆蓋
![](http://static.javashuo.com/static/loading.gif)
9一、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}]
![](http://static.javashuo.com/static/loading.gif)
9二、TGmeetup:蒐集、整理、展現、報名技術類線下聚會的命令行工具,讓使用者能夠更加方便、及時的獲取技術類活動資訊
9三、termtosvg:Python 寫的終端記錄器。經過命令 termtosvg
運行該工具,而後在終端執行你要展現的命令,最終輸入 exit
命令結束錄製,本地會生成一份 SVG 動畫,可用於分享、展現終端操做。效果以下:
![](http://static.javashuo.com/static/loading.gif)
9四、cx-extractor-python:這是一個對網頁正文進行抽取的工具。cx-extractor 算法的 python 版本,改進了原有算法,使其支持中英文,對新聞類網頁正文抽取效果較好。示例代碼:
from crawler.cx_extractor_Python import cx_extractor_Python
cx = 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)
9五、awslogs:一個簡單的命令行工具,用於在本地查詢 Amazon CloudWatch 日誌,強大的支持多實例日誌彙總查看。簡單的查看命令:awslogs get /var/logs/syslog ALL -s1d
![](http://static.javashuo.com/static/loading.gif)
9六、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 的打印日誌比較簡潔、規範,設置統1、簡單(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
9七、supervisor:Python 開發的一個 C/S 服務,是 Linux/Unix 系統下的一個進程管理工具,不支持 Windows 系統。它能夠很方便的監聽、啓動、中止、重啓一個或多個進程。用 Supervisor 管理的進程,當一個進程意外被殺死,supervisort 監聽到進程死後,會自動將它從新啓動,很方便的作到進程自動恢復的功能,提升系統、服務的穩定性,多用於生產環境
9八、himawaripy:一個 Python3 腳本,它會定時(需設置定時任務)抓取由日本 Himawari 8 氣象衛星拍攝的接近實時的地球照片,並將它設置成你的桌面背景
![](http://static.javashuo.com/static/loading.gif)
9九、loguru:一個讓 Python 記錄日誌變得簡單的庫
![](http://static.javashuo.com/static/loading.gif)
100、weixin_crawler:基於 Scrapy、Flask、Echarts、Elasticsearch 等實現的爬蟲。自帶 UI 界面、分析報告、搜索功能
推薦閱讀
經過簡歷造假進了大公司以後...... 肝了6個月,《Python黑魔法指南》全新版本 v2.0 上線發佈 那個從深圳流水線工人去Google上班程序媛,最近失業了!
華爲搜索引擎面世! 臥槽,又一款Python神器
感動:Python 與 Excel 終於在一塊兒了 再見,Visio!
推薦兩個團隊技術號
![]()
Github研習社: 目前是由國內985博士,碩士組成的團體發起並運營,主要分享和研究業界開源項目,學習資源,程序設計,學術交流。 回覆就無套路送你一份自學大禮包。
![]()
機器學習研習社
目前是由國內985博士,碩士組成的團體發起並運營。主要分享和研究機器學習、深度學習、NLP 、Python,大數據等前沿知識、乾貨筆記和優質資源。 回覆就無套路送你一份機器學習大禮包。
![]()
後臺回覆【大禮包】送你我整理的全套Python自學資料,不再用處處找資料了
本文分享自微信公衆號 - Python綠色通道(Python_channel)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。