Github上有趣的100個(gè)python項(xiàng)目

Github上面有很多有趣的python項(xiàng)目,包括軟件骆撇、庫(kù)瞒御、教程、資源等神郊。這次收集了其中比較受歡迎的100個(gè)肴裙,供大家參考。

關(guān)注公眾號(hào):pydatas涌乳,后臺(tái)回復(fù):項(xiàng)目蜻懦,獲得全部項(xiàng)目鏈接

1、Minos一個(gè)基于 Tornado/MongoDB/Redis 的社區(qū)系統(tǒng)

2夕晓、awesome-python-webapp廖老師的 Python 入門(mén)教程中的實(shí)踐項(xiàng)目的代碼

3宛乃、tushareTuShare 是一個(gè)免費(fèi)、開(kāi)源的 Python 財(cái)經(jīng)數(shù)據(jù)接口包蒸辆,TuShare 文檔

4征炼、beijing_bus北京實(shí)時(shí)公交,可以顯示查詢的公交到達(dá)某站還需多久

5、luokr.comPython Tornado 寫(xiě)的開(kāi)源網(wǎng)站——螺殼網(wǎng),訪問(wèn)劝赔,如圖:

6绣溜、ssbcPython Django 寫(xiě)的種子搜索網(wǎng)站——手撕包菜,如圖:

7尚蝌、listen1Listen 1 讓你用一個(gè)網(wǎng)頁(yè)就能聽(tīng)到多個(gè)網(wǎng)站的在線音樂(lè)叠国,支持各種平臺(tái)驶忌。如圖:

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

9囤屹、algorithm老齊的 Python 算法教程

10、python-gooseGoose 用于文章提取器逢渔,提取中文內(nèi)容的示例代碼:

>>> 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]
香港行政長(zhǎng)官梁振英在各方壓力下就其大宅的違章建筑(僭建)問(wèn)題到立法會(huì)接受質(zhì)詢肋坚,并向香港民眾道歉。

梁振英在星期二(12月10日)的答問(wèn)大會(huì)開(kāi)始之際在其演說(shuō)中道歉肃廓,但強(qiáng)調(diào)他在違章建筑問(wèn)題上沒(méi)有隱瞞的意圖和動(dòng)機(jī)智厌。

一些親北京陣營(yíng)議員歡迎梁振英道歉,且認(rèn)為應(yīng)能獲得香港民眾接受盲赊,但這些議員也質(zhì)問(wèn)梁振英有

11铣鹏、mincssPython 寫(xiě)的用來(lái)找到 CSS 中沒(méi)有用到的代碼片段,并刪除哀蘑。適用于:想要做一個(gè)頁(yè)面诚卸,但是不會(huì)寫(xiě) 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

# 這里改成想要參考的頁(yè)面
URL = 'http://localhost:9000/page.html'

def run():
    p = Processor()
    p.process(URL)

    # 輸出INlink的css的簡(jiǎn)化前和簡(jiǎn)化后的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的簡(jiǎn)化前和簡(jiǎn)化后的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這是一個(gè)運(yùn)行在 Google App Engine(GAE) 上的 Kindle 個(gè)人推送服務(wù)應(yīng)用合溺,生成排版精美的雜志模式mobi/epub格式自動(dòng)每天推送至您的 Kindle 或其他郵箱。

13缀台、python-guideRequests 庫(kù)的作者——kennethreitz棠赛,寫(xiě)的 Python 入門(mén)教程。不單單是語(yǔ)法層面的膛腐,涵蓋項(xiàng)目結(jié)構(gòu)睛约、代碼風(fēng)格,進(jìn)階哲身、工具等方方面面辩涝。雖然是英文版(中文翻譯版),但我這個(gè)英語(yǔ)渣都能看懂勘天,你肯定也可以膀值,快去看看吧,開(kāi)卷有益误辑。在線閱讀

14、flask-admin我工作中需要寫(xiě)一個(gè)微型的管理系統(tǒng)歌逢,用的就是這個(gè)框架巾钉。簡(jiǎn)直快餐型,頁(yè)面都寫(xiě)好了秘案,只要設(shè)置好相關(guān)配置就可以跑起來(lái)了砰苍。唯一缺點(diǎn)就是文檔中的例子少潦匈,開(kāi)發(fā)一些特定的需求需要自己看源碼,才能知道如何改赚导。文檔茬缩,下面是我跑起來(lái)之后的樣子:

15、python-sdk七牛云存儲(chǔ) SDK吼旧。我自己在用他家的服務(wù)凰锡,上手簡(jiǎn)單、有免費(fèi)額度圈暗,可以用來(lái)做‘圖床’掂为,同時(shí),有了這個(gè) SDK 可以寫(xiě)一些好用的小工具员串。注意:圖床不能隨便用勇哗,我曾經(jīng)就用超了,賬戶的錢(qián)能扣成負(fù)數(shù)寸齐!

16欲诺、superset企業(yè)級(jí)的數(shù)據(jù)探索、展示平臺(tái)渺鹦。功能很強(qiáng)大扰法,可以用來(lái)做數(shù)據(jù)分析、展示海铆。如下圖:

17迹恐、flaskbb基于 Flask 框架做的論壇,功能有限卧斟,輕量級(jí)的論壇應(yīng)用在線文檔殴边,可以在這個(gè)項(xiàng)目上進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)更加復(fù)雜的功能珍语。在線預(yù)覽

18锤岸、fuck-login模擬登錄一些知名的網(wǎng)站,為了方便爬取需要登錄的網(wǎng)站板乙。注意:控制爬蟲(chóng)的爬取頻率是偷!

19、Young基于 Tornado 框架募逞、MongoDB 數(shù)據(jù)庫(kù)蛋铆,寫(xiě)的功能豐富的社區(qū)項(xiàng)目。詳細(xì)的安裝步驟放接,適合學(xué)習(xí)如何創(chuàng)建社區(qū)類(lèi) Web App刺啦。在線預(yù)覽,項(xiàng)目運(yùn)行效果圖:

20纠脾、textfilter基于某 1w 詞敏感詞庫(kù)玛瘸,用 Python 實(shí)現(xiàn)幾種不同的過(guò)濾方式蜕青。用于過(guò)濾敏感詞的實(shí)用模塊,示例代碼:

from filter import DFAFilter

gfw = DFAFilter()
gfw.parse("keywords")
print "待過(guò)濾:售假人民幣 我操操操"
print "過(guò)濾后:", gfw.filter("售假人民幣 我操操操", "*")

test_first_character()

# 運(yùn)行結(jié)果
# 待過(guò)濾:售假人民幣 我操操操
# 過(guò)濾后: 售假**幣 ****

21糊渊、qrcodePython 寫(xiě)的生成動(dòng)態(tài)右核、彩色、各式各樣的二維碼渺绒,詳細(xì)的中文文檔贺喝,通過(guò) qrcode 生成的二維碼樣式如下:

22、httpie非常好用的命令行 HTTP 客戶端芒篷,cURL 的替代者搜变,返回的結(jié)果支持高亮,提高了可讀性针炉。用于調(diào)試接口挠他、查看服務(wù)器返回的 HTTP 協(xié)議的信息。在線文檔篡帕,下面的是 cURL 和 httpie 的返回結(jié)果對(duì)比圖:

23殖侵、langid用于識(shí)別輸入文本數(shù)據(jù)所屬的語(yǔ)種,目前支持 97 種語(yǔ)言識(shí)別镰烧。示例代碼:

import langid
text1 = "I am a coder and love data mining"
text2 = "請(qǐng)注明作者和出處并保留聲明和聯(lián)系方式"

print langid.classify(text1)
print langid.classify(text2)

# ('en', 0.9999957874458753)
# ('zh', 1.0)

24拢军、fake-useragent偽裝瀏覽器身份,常用于爬蟲(chóng)怔鳖。這個(gè)項(xiàng)目的代碼很少茉唉,可以閱讀一下,看看 ua.random 是如何返回隨機(jī)的瀏覽器身份的 结执,示例代碼:

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

25度陆、redditreddit.com 網(wǎng)站的源碼,通過(guò)這個(gè)項(xiàng)目献幔,可以學(xué)習(xí) Python 在構(gòu)建大型項(xiàng)目中的使用懂傀、項(xiàng)目結(jié)構(gòu)、代碼風(fēng)格蜡感、Python 技巧的使用方法等蹬蚁。安裝教程

26、httpstathttpstat 美化了 curl 的結(jié)果郑兴,使得結(jié)果更加可讀犀斋。同時(shí)它無(wú)依賴(lài)、兼容 Python3情连、一共才 300 多行闪水。還可以顯示 HTTP 請(qǐng)求的每個(gè)過(guò)程中消耗的時(shí)間,如下圖:

27、PyMySQL純 Pyton 寫(xiě)的 MySQL 庫(kù)球榆,純 Python 的好處就是可以運(yùn)行在任何裝有 Python 解釋器(CPython、PyPy禁筏、IronPython)的平臺(tái)上持钉。相對(duì)于 MySQLdb 性能幾乎一樣,使用方法也一樣篱昔,但是 PyMySQL 安裝方法極其簡(jiǎn)單——pip install PyMySQL每强,PyMySQL 使用示例代碼:

# 下面為例子需要的數(shù)據(jù)庫(kù)的建表語(yǔ)句
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

# 連接數(shù)據(jù)庫(kù)
connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:
        # 創(chuàng)建一個(gè)新的紀(jì)錄(record)
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    # 連接不會(huì)自動(dòng)提交,所以你想下面要調(diào)用 commit 方法州刽,存儲(chǔ)對(duì)數(shù)據(jù)庫(kù)的改動(dòng)
    connection.commit()

    with connection.cursor() as cursor:
        sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('webmaster@python.org',))

        # 獲取一條的紀(jì)錄(record)
        result = cursor.fetchone()
        print(result)  # 結(jié)果輸出:{'password': 'very-secret', 'id': 1}
finally:
    connection.close()  # 操作完數(shù)據(jù)庫(kù)一要記得調(diào)用 close 方法空执,關(guān)閉連接

28、flask-limiter一個(gè) Flask 的擴(kuò)展庫(kù)穗椅,它可以根據(jù)訪問(wèn)者的 IP 限制其訪問(wèn)頻率辨绊、次數(shù)等。示例代碼如下:

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()

29匹表、ngrok一個(gè)十分方便门坷、好用的內(nèi)網(wǎng)穿透工具,它可以把本地某個(gè)端口的服務(wù)袍镀,通過(guò)一個(gè)安全隧道默蚌,映射到公網(wǎng)的一個(gè)地址。同時(shí)它提供了一個(gè) Web 頁(yè)面苇羡,展示了每個(gè)請(qǐng)求绸吸、響應(yīng)的所有信息,便于調(diào)試本地的程序设江〗踝拢基本的使用方法如下:

ngrok 協(xié)議 本地服務(wù)監(jiān)聽(tīng)的端口
ngrok http 8000

創(chuàng)建成功會(huì)返回公網(wǎng)地址,然后通過(guò)該地址就可以訪問(wèn)到本地的服務(wù)绣硝。
本地訪問(wèn) http://localhost:4040蜻势,就可以查看關(guān)于每個(gè)請(qǐng)求、響應(yīng)的相關(guān)數(shù)據(jù)

30鹉胖、glances一個(gè)可以讓你一目了然你的系統(tǒng)情況(類(lèi) (h)top)的工具握玛,它界面友好,安裝方便:pip install glances

31甫菠、saythanks.ioKennethreitz 寫(xiě)的一個(gè)簡(jiǎn)單的網(wǎng)站(基于 Flask)挠铲,用于向開(kāi)源項(xiàng)目作者發(fā)送感謝郵件的 Web App。該項(xiàng)目結(jié)構(gòu)簡(jiǎn)單寂诱,可以用來(lái)學(xué)習(xí)大神是如何快速開(kāi)發(fā) Web 項(xiàng)目拂苹、方法、代碼風(fēng)格痰洒、開(kāi)發(fā)常用庫(kù)瓢棒。而且該項(xiàng)目的意義也特別好:感謝開(kāi)源項(xiàng)目的作者浴韭,愿開(kāi)源社區(qū)越來(lái)越好,網(wǎng)站地址

32脯宿、locust模擬用戶行為的負(fù)載測(cè)試工具念颈,包含友好的 Web 頁(yè)面,如下圖:

33连霉、jumpserverJumpserver 是一款由 Python 編寫(xiě)開(kāi)源的跳板機(jī)(是一類(lèi)可作為跳板批量操作遠(yuǎn)程設(shè)備的網(wǎng)絡(luò)設(shè)備)系統(tǒng)榴芳,實(shí)現(xiàn)了跳板機(jī)應(yīng)有的功能《搴常基于 SSH 協(xié)議來(lái)管理窟感,客戶端無(wú)需安裝 agent。支持常見(jiàn) Linux 系統(tǒng)歉井,效果如下:

34柿祈、shsh 是一個(gè)成熟,用于替代 subprocess酣难,它允許你調(diào)用任何程序谍夭,就像它是一個(gè)函數(shù),支持 Python2.6 - 3.5

from sh import ifconfig
print ifconfig("eth0")

35憨募、fastText.pyfastText 簡(jiǎn)而言之紧索,就是把文檔中所有詞通過(guò) lookup table 變成向量,取平均后直接用線性分類(lèi)器得到分類(lèi)結(jié)果菜谣。fastText 的實(shí)現(xiàn)

36珠漂、mongoaudit強(qiáng)大的 MongoDB 滲透測(cè)試工具,用于發(fā)掘 MongoDB 漏洞尾膊、并提出改善方法媳危。

  • 安裝:pip install mongoaudit
  • 運(yùn)行:python mongoaudit

37、myclimycli 是一個(gè)帶語(yǔ)法高亮冈敛、自動(dòng)補(bǔ)全的 MySQL 命令行客戶端工具待笑。例如,連接數(shù)據(jù)庫(kù)方法:mycli -h localhost -u 用戶名 數(shù)據(jù)庫(kù)

38抓谴、python-fireFire 是 Google 開(kāi)源的 Python 庫(kù)暮蹂,可自動(dòng)將您的代碼轉(zhuǎn)變成 CLI,無(wú)需您做任何額外工作癌压。您不必定義參數(shù)仰泻,設(shè)置幫助信息,或者編寫(xiě)定義代碼運(yùn)行方式的 main 函數(shù)滩届。相反集侯,您只需從 main 模塊調(diào)用“Fire”函數(shù),其余工作全部交由 Python Fire 來(lái)完成。示例代碼如下:

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()

# 在終端中調(diào)用效果如下:
$ ./example.py hello
Hello world!
$ ./example.py hello David
Hello David!
$ ./example.py hello --name=Google
Hello Google!

39棠枉、ngxtop解析 nginx 訪問(wèn)日志并格式化輸出有用的信息浓体,可以用來(lái)實(shí)時(shí)了解你的服務(wù)器正在發(fā)生的情況。安裝命令 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基本算法、數(shù)據(jù)結(jié)構(gòu)的 Python 實(shí)現(xiàn)

.
├── 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分分鐘打造一個(gè)聚合的搜索引擎,使用簡(jiǎn)單稚新,部署方便勘伺。拓展方便,基于插件式的管理褂删。演示地址

42飞醉、grequestsRquests + Gevent 讓異步 HTTP 變得簡(jiǎn)單、人性化屯阀。示例代碼:

>>> 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]>]

43缅帘、explainshell一個(gè)可以解析 Linux 命令的網(wǎng)站,它可以給出命令的解釋和其參數(shù)的解釋?zhuān)纾?code>ps -aux|grep python难衰,在線演示

44钦无、certbot免費(fèi)的自動(dòng)啟用和部署 HTTPS 的工具,讓你的網(wǎng)站開(kāi)啟 HTTPS 變得簡(jiǎn)單快捷盖袭。在部署教程頁(yè)面選擇服務(wù)器的操作系統(tǒng)和 Web 服務(wù)器失暂,之后根據(jù)給出的步驟一步步的執(zhí)行命令就行了,部署教程

45鳄虱、musicbox基于 Python 編寫(xiě)的網(wǎng)易云音樂(lè)命令行版本弟塞,使用起來(lái)簡(jiǎn)單優(yōu)雅,能夠快速安裝及使用

46拙已、django-blog-tutorial基于最新版 Django 1.10 和 Python 3.5决记,通過(guò) 26 篇教程一步步帶你使用 Django 從零開(kāi)發(fā)一個(gè)個(gè)人博客系統(tǒng),在實(shí)踐的同時(shí)掌握 Django 的開(kāi)發(fā)技巧倍踪,完成效果展示

47系宫、aredis一款基于 Python3 asyncio 的異步 redis 客戶端,支持對(duì)于單實(shí)例惭适,連接池笙瑟, 哨兵以及集群。作者希望可以找到志同道合的小伙伴集思廣益癞志,一起維護(hù)往枷、優(yōu)化。示例代碼如下:

>>> 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時(shí)間漫步模塊错洁,模擬到某一個(gè)時(shí)間秉宿,使用簡(jiǎn)單方式多樣,實(shí)現(xiàn)了裝飾器屯碴、上下文等調(diào)用方式描睦。示例代碼如下:

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)

49、LearnPython這一個(gè)以”擼代碼“的形式學(xué)習(xí) Python 的編程技巧的項(xiàng)目导而,針對(duì) Python 的一些語(yǔ)法特性力求通過(guò)代碼例子解釋該知識(shí)點(diǎn)忱叭、同時(shí)還有一些實(shí)踐項(xiàng)目,通過(guò)動(dòng)手實(shí)踐有助于知識(shí)的融會(huì)貫通今艺。同時(shí)可以關(guān)注作者的知乎專(zhuān)欄學(xué)習(xí)更多的 Python 編程技巧

50韵丑、getproxy極簡(jiǎn)的抓取代理項(xiàng)目,無(wú)需配置虚缎。不僅提供了獲取代理腳本撵彻,同時(shí)可以通過(guò)該頁(yè)面,直接獲取可用代理(15min 更新实牡、類(lèi)型包含http和https)

51陌僵、syncPlaylist在網(wǎng)易云音樂(lè)與 QQ 音樂(lè)之間同步歌單。易于使用创坞、配置方便碗短、代碼簡(jiǎn)單,用到的技術(shù):requests + beautifulsoup 以及 selenium + phantomjs

52摆霉、GetSubtitles通過(guò)拖曳視頻文件進(jìn)終端豪椿,一步下載字幕 到視頻對(duì)應(yīng)文件夾,并重命名字幕名稱(chēng)為視頻名稱(chēng)携栋。Ubuntu 16.04搭盾、Windows 10上測(cè)試通過(guò),同時(shí)兼容 Python2婉支、3鸯隅。Python 的魅力之一就是可以快速實(shí)現(xiàn)一個(gè)適合自己的小工具 Cool ??

53、huey結(jié)合 redis 實(shí)現(xiàn)的輕量任務(wù)隊(duì)列向挖,但是支持功能還是很多的:

  • 多進(jìn)程蝌以、多線程、協(xié)程
  • 任務(wù)定時(shí)執(zhí)行
  • 任務(wù)執(zhí)行失敗重試
  • 結(jié)果存儲(chǔ)

54何之、simiki一個(gè)簡(jiǎn)單的個(gè)人 Wiki 框架跟畅,便于快速搭建 Wiki 頁(yè)。使用 Markdown 書(shū)寫(xiě) Wiki, 生成靜態(tài) HTML 頁(yè)面溶推。Wiki 源文件按目錄分類(lèi)存放, 方便管理維護(hù)徊件。中文文檔

55奸攻、pyechartsEcharts+Python 實(shí)現(xiàn)的一個(gè)用于生成 Echarts 圖表的類(lèi)庫(kù)

56、proxy_pool基于 Python 的自建代理 IP 池服務(wù)虱痕,通過(guò)網(wǎng)絡(luò)爬蟲(chóng)抓取互聯(lián)網(wǎng)上免費(fèi)的代理 IP睹耐,本地校驗(yàn)、剔除失效的代理IP部翘,從而實(shí)現(xiàn)高可用的代理 IP 池硝训。最后使用 Flask 搭建提供代理 IP 服務(wù),包括代理池刷新新思、無(wú)效代理刪除窖梁、代理獲取等。該項(xiàng)目設(shè)計(jì)文檔詳細(xì)夹囚、模塊結(jié)構(gòu)簡(jiǎn)明易懂苹丸,同時(shí)適合爬蟲(chóng)新手更好的學(xué)習(xí)爬蟲(chóng)技術(shù)

57及穗、WeiboSpider分布式微博爬蟲(chóng),支持快速抓取和穩(wěn)定抓取兩種運(yùn)行模式藏否。項(xiàng)目模塊邏輯清晰蛔翅、注釋豐富敲茄、便于定制化自己的需求。同時(shí)山析,對(duì)于小白用戶堰燎,可以通過(guò)演示視頻快速入門(mén),也提供QQ群答疑笋轨,已經(jīng)持續(xù)維護(hù)一年多秆剪。靠譜的項(xiàng)目爵政,小伙伴們要趕快上車(chē)~

58仅讽、pygorithm一個(gè)幫助學(xué)習(xí)主要算法的庫(kù),可以通過(guò)理解這些算法的實(shí)現(xiàn)钾挟,提高自己的算法水平洁灵。冒泡排序示例:

>>> 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強(qiáng)大的提取 Web 的內(nèi)容掺出、文章的庫(kù)徽千,支持多種語(yǔ)言,安裝命令 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])
香港行政長(zhǎng)官梁振英在各方壓力下就其大宅的違章建
筑(僭建)問(wèn)題到立法會(huì)接受質(zhì)詢双抽,并向香港民眾道歉。
梁振英在星期二(12月10日)的答問(wèn)大會(huì)開(kāi)始之際
在其演說(shuō)中道歉闲礼,但強(qiáng)調(diào)他在違章建筑問(wèn)題上沒(méi)有隱瞞的
意圖和動(dòng)機(jī)牍汹。 一些親北京陣營(yíng)議員歡迎梁振英道歉铐维,
且認(rèn)為應(yīng)能獲得香港民眾接受,但這些議員也質(zhì)問(wèn)梁振英有

>>> print(a.title)
港特首梁振英就住宅違建事件道歉

60柑贞、faker用于生成假數(shù)據(jù)的庫(kù)方椎,支持多種語(yǔ)言,你值得擁有钧嘶。示例代碼:

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。根據(jù)不同選項(xiàng)有决,提供如下功能

  • 數(shù)據(jù)快速回滾闸拿,閃回原理與實(shí)踐
  • 主從切換后新 master 丟數(shù)據(jù)的修復(fù)
  • 從 binlog 生成標(biāo)準(zhǔn)SQL,帶來(lái)的衍生功能

62书幕、pandas-tutorial這套 pandas 教程包含從初級(jí)到進(jìn)階的內(nèi)容新荤,適合初學(xué)者和希望進(jìn)階建立知識(shí)體系的數(shù)據(jù)科學(xué)從業(yè)者閱讀。作者還在持續(xù)更新高級(jí)內(nèi)容台汇,你值得擁有

63苛骨、pysheeetPython 速查表,在線閱讀

64苟呐、robobrowser提供多種模擬操作網(wǎng)頁(yè)的庫(kù)痒芝,比如獲得網(wǎng)頁(yè)內(nèi)容、訪問(wèn)鏈接牵素、點(diǎn)擊按鈕严衬、填充并提交表單、上傳文件笆呆。使用簡(jiǎn)單请琳、API 友好。適用于想要通過(guò)腳本流程化操作赠幕,某些未提供這些操作接口的場(chǎng)景俄精,示例代碼如下:

# 上傳文件
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)

65、ItChat開(kāi)源的微信個(gè)人號(hào)SDK劣坊,提供了豐富的功能嘀倒。從而使得 Python 調(diào)用微信、發(fā)送消息局冰、傳輸文件等操作只需要編寫(xiě)極少的代碼测蘑,示例代碼如下:

import itchat

itchat.auto_login()

itchat.send('Hello, filehelper', toUserName='filehelper')

66、recordsKenneth Reitz 大神的for Humans?系列康二,Records 是一個(gè)支持大多數(shù)主流關(guān)系數(shù)據(jù)庫(kù)的原生 SQL 查詢第三方庫(kù)碳胳。API 友好,使用簡(jiǎn)單沫勿、支持命令行模式挨约、功能多樣味混。與此同時(shí)該庫(kù)只有 500 行代碼,可以當(dāng)作入門(mén)閱讀源碼的項(xiàng)目诫惭,同時(shí)學(xué)習(xí)大神的編程技巧與習(xí)慣翁锡,示例代碼如下:

import records

db = records.Database('postgres://...')  # 連接數(shù)據(jù)庫(kù)
rows = db.query('select * from active_users')  # 執(zhí)行原生 SQL
# 遍歷結(jié)果
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

# 支持將結(jié)果導(dǎo)出成不同格式
print(rows.export('json'))  # json
print(rows.export('csv'))  # csv
print(rows.export('yaml')) # yaml
rows.export('df')  # pandas 的 df 對(duì)象
with open('report.xls', 'wb') as f:
    f.write(rows.export('xls'))  # xls

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

68、joblib使用 Python 方便的進(jìn)行并行計(jì)算篮撑,示例代碼如下:

from joblib import Parallel, delayed
from math import sqrt
Parallel(n_jobs=1)(delayed(sqrt)(i**2) for i in range(10))

69减细、tldr-python-clientLinux man 解釋一般都太長(zhǎng)了,很多時(shí)候我們就想用一些比較常用的命令赢笨,但卻記不起來(lái)未蝌。這個(gè)時(shí)候如果不 Google,就可以用 tldr(簡(jiǎn)化 man 的工程)茧妒。該項(xiàng)目為 Python 客戶端實(shí)現(xiàn)

<u style="text-decoration: none; border-bottom: 1px dashed grey; color: rgb(26, 26, 26); font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">

</u>

70树埠、thefuck在 Linux 命令行中,當(dāng)你輸入的命令有錯(cuò)誤后嘶伟,直接輸入 fuck 就可以自動(dòng)執(zhí)行修復(fù)后的命令,效果圖如下:

71又碌、youtube-dl強(qiáng)大的視頻下載工具九昧,支持幾百個(gè)國(guó)內(nèi)外主流視頻網(wǎng)站。正如名字一樣毕匀,最初是為了下載 youtube 上的視頻而開(kāi)發(fā)的铸鹰。如果有國(guó)外服務(wù)器的朋友,可以充分利用這個(gè)工具皂岔,下載 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 庫(kù)把下載的視頻同步到百度網(wǎng)盤(pán)上

72、jieba強(qiáng)大的 Python 分詞庫(kù)教馆,拿來(lái)直接用就好逊谋。示例代碼如下:

# encoding=utf-8
import jieba

seg_list = jieba.cut("我來(lái)到北京清華大學(xué)", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))  # 全模式

seg_list = jieba.cut("我來(lái)到北京清華大學(xué)", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 精確模式

seg_list = jieba.cut("他來(lái)到了網(wǎng)易杭研大廈")  # 默認(rèn)是精確模式
print(", ".join(seg_list))

seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國(guó)科學(xué)院計(jì)算所,后在日本京都大學(xué)深造")  # 搜索引擎模式
print(", ".join(seg_list))

【全模式】: 我/ 來(lái)到/ 北京/ 清華/ 清華大學(xué)/ 華大/ 大學(xué)

【精確模式】: 我/ 來(lái)到/ 北京/ 清華大學(xué)

【新詞識(shí)別】:他, 來(lái)到, 了, 網(wǎng)易, 杭研, 大廈    (此處土铺,“杭研”并沒(méi)有在詞典中胶滋,但是也被Viterbi算法識(shí)別出來(lái)了)

【搜索引擎模式】: 小明, 碩士, 畢業(yè), 于, 中國(guó), 科學(xué), 學(xué)院, 科學(xué)院, 中國(guó)科學(xué)院, 計(jì)算, 計(jì)算所, 后, 在, 日本, 京都, 大學(xué), 日本京都大學(xué), 深造

73板鬓、pydu該庫(kù)將平時(shí)常用的數(shù)據(jù)結(jié)構(gòu)和工具都收錄其中,可供日常開(kāi)發(fā)的使用究恤,同時(shí)方便學(xué)習(xí)與借鑒俭令,豐富的文檔能幫助新手更好的理解和使用它。這些實(shí)用的模塊都是來(lái)自于開(kāi)源項(xiàng)目和貢獻(xiàn)者們的智慧部宿,快來(lái)加入到這個(gè)項(xiàng)目中抄腔,讓它變得更加實(shí)用和豐富

74、shell-functools把函數(shù)式的編程帶入 shell窟赏,從而讓很多事情變得簡(jiǎn)單妓柜。通過(guò) Python 的高階函數(shù)和內(nèi)置模塊 os.path 與命令的管道結(jié)合,達(dá)到了強(qiáng)大涯穷、高效的功效棍掐。相比于單純的命令實(shí)現(xiàn)更加的直觀和容易理解,示例代碼如下:

示例 1
# ls 查看當(dāng)前目錄下的文件
> ls 
document.txt
folder
image.jpg

# 通過(guò) map abspath 展示這些文件的絕對(duì)路徑
> 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

# 把找到的結(jié)果中的文件拷况,重命名在末尾追加 .bak (備份文件)
> find | filter is_file | map basename | map append ".bak"
me.jpg.bak
song.mp3.bak
document.txt.bak
image.jpg.bak

75作煌、tqdm強(qiáng)大、快速赚瘦、易擴(kuò)展的 Python 進(jìn)度條庫(kù)粟誓。我想通過(guò)下面的示例代碼和效果展示圖,你會(huì)跑去給這個(gè)項(xiàng)目來(lái)個(gè) Star 的

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

76起意、HAipproxy使用 Scrapy+Redis 實(shí)現(xiàn)的高可用分布式 IP 代理池鹰服,為大型分布式爬蟲(chóng)提供高可用低延遲的代理 IP 資源。

from client.py_cli import ProxyFetcher
args = dict(host='127.0.0.1', port=6379, password='123456', db=0)
@抗荆 這里`zhihu`的意思是悲酷,去和`zhihu`相關(guān)的代理ip校驗(yàn)隊(duì)列中獲取ip
# 這么做的原因是同一個(gè)代理IP對(duì)不同網(wǎng)站代理效果不同
fetcher = ProxyFetcher('zhihu', strategy='greedy', redis_args=args)
# 獲取一個(gè)可用代理
print(fetcher.get_proxy())
# 獲取可用代理列表
print(fetcher.get_proxies()) # or print(fetcher.pool)

以知乎為目標(biāo)抓取網(wǎng)站亲善,該代理IP池的實(shí)際性能測(cè)試結(jié)果如下:

77设易、MovieHeavens基于 Pyqt4 的電影天堂電影搜索工具,再也不用忍受各種廣告和點(diǎn)擊跳轉(zhuǎn)了

78蛹头、WechatSogou基于搜狗微信搜索的微信公眾號(hào)爬蟲(chóng)庫(kù)顿肺,極易上手。示例代碼:

import wechatsogou

ws_api = wechatsogou.WechatSogouAPI()
ws_api.get_gzh_info('微信名稱(chēng)')

79渣蜗、Synonyms中文近義詞工具包屠尊。支持自然語(yǔ)言理解的很多任務(wù):文本對(duì)齊、推薦算法耕拷、相似度計(jì)算知染、語(yǔ)義偏移、關(guān)鍵字提取斑胜、概念提取控淡、自動(dòng)摘要嫌吠、搜索引擎等。示例代碼如下:

import synonyms
synonyms.seg("能量")

80掺炭、pook模擬 HTTP 請(qǐng)求結(jié)果的庫(kù)辫诅,可用于單元測(cè)試等場(chǎng)景。采用裝飾器方式調(diào)用的示例代碼如下:

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)

81涧狮、incubator-airflow定時(shí)任務(wù)管理平臺(tái)炕矮,管理和調(diào)度各種離線定時(shí)任務(wù),自帶 Web 管理界面者冤。當(dāng)定時(shí)任務(wù)量達(dá)到百級(jí)別的時(shí)候肤视,就無(wú)法再使用 crontab 有效、方便地管理這些任務(wù)了涉枫。該項(xiàng)目就是為了解決了這個(gè)問(wèn)題而誕生的

82邢滑、wtfpython有趣、令人驚訝(坑爹)愿汰、鮮為人知的 Python 代碼片段集合困后。中文

<u style="text-decoration: none; border-bottom: 1px dashed grey; color: rgb(26, 26, 26); font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">

</u>

83、redis-fainaRedis 性能分析器衬廷。提供兩種模式分析模式:命令實(shí)時(shí)摇予、讀取日志。其原理是使用 Redis MONITOR 命令吗跋,將該命令的結(jié)果通過(guò)管道傳遞給 redis-faina 腳本侧戴,腳本將返回的信息解析,并匯成總成統(tǒng)計(jì)信息跌宛。具體信息如下所示:

注意:分析非常閑的 redis 實(shí)例時(shí)救鲤,分析的結(jié)果可能偏差的很多。
時(shí)間單位為微秒:ms = 1.0 × 10^-6 seconds

Overall Stats
========================================
# 總命令數(shù)
Lines Processed     10
# QPS
Commands/Sec        1.03       

# 出現(xiàn)最多的 key 的前綴
Top Prefixes                           
========================================
startchart      9   (90.00%)

# 請(qǐng)求最多的key
Top Keys                                
========================================
startchart:521xueweihan/hellogithub     9   (90.00%)

# 請(qǐng)求最多的命令
Top Commands                        
========================================
get     9   (90.00%)

# 請(qǐng)求響應(yīng)時(shí)間的分布
Command Time (microsecs)       
========================================
Median      583914.0
75%         637395.0
90%         5703923.0
99%         5703923.0

# 總耗時(shí)最多的命令
Heaviest Commands (microsecs)
========================================
get     9746157.0

# 慢請(qǐng)求列表
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使用類(lèi)似于 ORM 的語(yǔ)法,序列化斥扛、反序列化 Python 對(duì)象入问。可以將序列化的對(duì)象呈現(xiàn)為標(biāo)準(zhǔn)格式稀颁,適用于例如數(shù)據(jù)校驗(yàn)芬失、返回 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'}

85匾灶、tenacity使用該庫(kù)可以優(yōu)雅地實(shí)現(xiàn)各種需求的重試棱烂。示例代碼如下:

from tenacity import retry, stop_after_attempt

# 通過(guò)裝飾器,實(shí)現(xiàn)遇到異常重試3次
@retry(stop=stop_after_attempt(3)) 
def get_data(url):
    response = requests.get(url)
    response_json = response.json()

86阶女、unimatrix模擬“黑客帝國(guó)”影片中的終端動(dòng)畫(huà)腳本

87颊糜、pudb基于控制臺(tái)的全屏 Python 可視化調(diào)試器哩治。比 pdb 好用太多了,特性:

  • 源碼語(yǔ)法高亮衬鱼,棧业筏、斷點(diǎn)、變量可見(jiàn)并且一直動(dòng)態(tài)更新鸟赫。變量展示還有很多可以定制化的功能蒜胖。
  • 基于鍵盤(pán),簡(jiǎn)單高效抛蚤。支持 VI 的鼠標(biāo)移動(dòng)台谢。還支持 PDB 的某些命令
  • 支持查找源代碼,可以使用 m 代用 module browser 查看載入的模塊
  • 斷點(diǎn)設(shè)置岁经。鼠標(biāo)移到某行代碼朋沮,按 b,然后可以在斷點(diǎn)窗口編輯斷點(diǎn)

88蒿偎、Scylla一款高質(zhì)量的免費(fèi)代理 IP 池工具朽们,僅支持 Python 3.6。中文文檔诉位,特性如下:

  • 自動(dòng)化的代理 IP 爬取與驗(yàn)證
  • 易用的 JSON API
  • 簡(jiǎn)單但美觀的 web 用戶界面骑脱,基于 TypeScript 和 React(例如,代理的地理分布)
  • 最少僅用一行代碼即可與 Scrapy 和 requests 進(jìn)行集成
  • 等等

<u style="text-decoration: none; border-bottom: 1px dashed grey; color: rgb(26, 26, 26); font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">

</u>

89苍糠、hue開(kāi)源的 Apache Hadoop UI 系統(tǒng)叁丧。通過(guò)使用 Hue 我們可以在瀏覽器端的 Web 控制臺(tái)上與 Hadoop 集群進(jìn)行交互來(lái)分析處理數(shù)據(jù)。核心功能:

  • 數(shù)據(jù)可視化
  • SQL 編輯器岳瞭,支持 Hive拥娄、Impala、MySQL等
  • 可進(jìn)行 workflow 的編輯瞳筏、查看

90稚瘾、FeelUOwn一個(gè)符合 Unix 哲學(xué)的跨平臺(tái)的音樂(lè)播放器,主要面向 Linux/macOS 用戶姚炕。特性:

  • 安裝簡(jiǎn)單摊欠,新手友好
  • 默認(rèn)提供國(guó)內(nèi)各音樂(lè)平臺(tái)插件(網(wǎng)易云、蝦米柱宦、QQ)
  • 較強(qiáng)的可擴(kuò)展性可以滿足大家折騰的欲望
  • 核心模塊有較好文檔和測(cè)試覆蓋

91些椒、tinydbTinyDB 是使用純 Python 編寫(xiě)的 NoSQL 數(shù)據(jù)庫(kù),使用 json 文件存儲(chǔ)數(shù)據(jù)掸刊。它區(qū)別于 SQLite 的關(guān)系性數(shù)據(jù)庫(kù)免糕。同樣的小、不需要依賴(lài)外部服務(wù)器。適用于桌面程序石窑、客戶端牌芋,不適用于 Web 應(yīng)用、高性能的數(shù)據(jù)查詢尼斧。友好的 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搜集棺棵、整理楼咳、展示、報(bào)名技術(shù)類(lèi)線下聚會(huì)的命令行工具烛恤,讓使用者可以更加方便母怜、及時(shí)的獲取技術(shù)類(lèi)活動(dòng)資訊

93、termtosvgPython 寫(xiě)的終端記錄器缚柏。通過(guò)命令 termtosvg 運(yùn)行該工具苹熏,然后在終端執(zhí)行你要展示的命令,最終輸入 exit 命令結(jié)束錄制币喧,本地會(huì)生成一份 SVG 動(dòng)畫(huà)轨域,可用于分享、展示終端操作杀餐。效果如下:

94干发、cx-extractor-python這是一個(gè)對(duì)網(wǎng)頁(yè)正文進(jìn)行抽取的工具。 cx-extractor 算法的 python 版本史翘,改進(jìn)了原有算法枉长,使其支持中英文,對(duì)新聞?lì)惥W(wǎng)頁(yè)正文抽取效果較好琼讽。示例代碼:

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)

95必峰、awslogs一個(gè)簡(jiǎn)單的命令行工具,用于在本地查詢 Amazon CloudWatch 日志钻蹬,強(qiáng)大的支持多實(shí)例日志匯總查看吼蚁。簡(jiǎn)單的查看命令:awslogs get /var/logs/syslog ALL -s1d

96、CUPCUP 基礎(chǔ)庫(kù)是百度開(kāi)源的 Python 語(yǔ)言基礎(chǔ)庫(kù)问欠,致力將 DEV 從涉及底層操作肝匆、Util 操作類(lèi)解放出來(lái),使其更關(guān)注構(gòu)建 service 上層業(yè)務(wù)邏輯溅潜。 目前已涵蓋了構(gòu)建一個(gè)服務(wù)的各個(gè)方面,大家可以從基礎(chǔ)庫(kù)的代碼結(jié)構(gòu)薪伏、wiki滚澜、doc 中進(jìn)行簡(jiǎn)單了解。

cup
    |-- cache.py                module              緩存相關(guān)模塊 ( Memory cache related module )
    |-- decorators.py           module              python 修飾符嫁怀,比如 @Singleton 單例模式 (Decorators of python)
    |-- err.py                  module              異常 exception 類(lèi), Exception classes for CUP
    |-- __init__.py             module              默認(rèn)__init__.py, Default __init__.py
    |-- log.py                  module              打印日志類(lèi)设捐,CUP 的打印日志比較簡(jiǎn)潔借浊、規(guī)范,設(shè)置統(tǒng)一萝招、簡(jiǎn)單(cup logging module)
    |-- mail.py                 module              發(fā)送郵件 ( CUP Email module (send emails))
    |-- net                     package             網(wǎng)絡(luò)相關(guān)操作( Network operations, such as net handler parameter tuning )
    |-- oper.py                 module              一些混雜操作(Mixin operations)
    |-- platforms.py            module              跨平臺(tái)蚂斤、平臺(tái)相關(guān)操作函數(shù)(Cross-platform operations)
    |-- res                     package             資源獲取、實(shí)時(shí)用量統(tǒng)計(jì)等槐沼,所有在 /prco 可獲得的系統(tǒng)資源曙蒸、進(jìn)程、設(shè)備等信息 ( Resource usage queries (in /proc)岗钩、Prcoess query纽窟、etc )
    |-- shell                   package             命令 Shell 操作 pakcage ( Shell Operations、cross-hosts execution )
    |-- services                package             構(gòu)建服務(wù)支持的類(lèi)(比如心跳兼吓、線程池 based 執(zhí)行器等等) Heartbeat臂港、Threadpool based executors、file service视搏、etc
    |-- thirdp                  package             第三方依賴(lài)純 Py 模塊( Third-party modules:pexpect审孽、httplib2 )
    |-- timeplus.py             module              時(shí)間相關(guān)的模塊(Time related module)
    |-- unittest.py             module              單元測(cè)試支持模塊( Unittest、assert浑娜、noseClass )
    |-- util                    package             線程池佑力、可打斷線程、語(yǔ)義豐富的配置文件支持( ThreadPool棚愤、Interruptable-Thread搓萧、Rich configuration、etc )
    |-- version.py              module              內(nèi)部版本文件宛畦,CUP Version

97瘸洛、supervisorPython 開(kāi)發(fā)的一個(gè) C/S 服務(wù),是 Linux/Unix 系統(tǒng)下的一個(gè)進(jìn)程管理工具次和,不支持 Windows 系統(tǒng)反肋。它可以很方便的監(jiān)聽(tīng)、啟動(dòng)踏施、停止石蔗、重啟一個(gè)或多個(gè)進(jìn)程。用 Supervisor 管理的進(jìn)程畅形,當(dāng)一個(gè)進(jìn)程意外被殺死养距,supervisort 監(jiān)聽(tīng)到進(jìn)程死后,會(huì)自動(dòng)將它重新啟動(dòng)日熬,很方便的做到進(jìn)程自動(dòng)恢復(fù)的功能棍厌,提高系統(tǒng)、服務(wù)的穩(wěn)定性,多用于生產(chǎn)環(huán)境

98耘纱、himawaripy一個(gè) Python3 腳本敬肚,它會(huì)定時(shí)(需設(shè)置定時(shí)任務(wù))抓取由日本 Himawari 8 氣象衛(wèi)星拍攝的接近實(shí)時(shí)的地球照片,并將它設(shè)置成你的桌面背景

99束析、loguru一個(gè)讓 Python 記錄日志變得簡(jiǎn)單的庫(kù)

100艳馒、weixin_crawler基于 Scrapy、Flask员寇、Echarts弄慰、Elasticsearch 等實(shí)現(xiàn)的微信公眾號(hào)文章爬蟲(chóng)。自帶 UI 界面丁恭、分析報(bào)告曹动、搜索功能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市牲览,隨后出現(xiàn)的幾起案子墓陈,更是在濱河造成了極大的恐慌,老刑警劉巖第献,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贡必,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡庸毫,警方通過(guò)查閱死者的電腦和手機(jī)仔拟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)飒赃,“玉大人利花,你說(shuō)我怎么就攤上這事≡丶眩” “怎么了炒事?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蔫慧。 經(jīng)常有香客問(wèn)我挠乳,道長(zhǎng),這世上最難降的妖魔是什么姑躲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任睡扬,我火速辦了婚禮,結(jié)果婚禮上黍析,老公的妹妹穿的比我還像新娘卖怜。我一直安慰自己,他們只是感情好阐枣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布马靠。 她就那樣靜靜地躺著牍戚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虑粥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天宪哩,我揣著相機(jī)與錄音娩贷,去河邊找鬼。 笑死锁孟,一個(gè)胖子當(dāng)著我的面吹牛彬祖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播品抽,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼储笑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肾扰!你這毒婦竟也來(lái)了业稼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤穴吹,失蹤者是張志新(化名)和其女友劉穎盆昙,沒(méi)想到半個(gè)月后羽历,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淡喜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年秕磷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炼团。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡澎嚣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瘟芝,到底是詐尸還是另有隱情易桃,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布模狭,位于F島的核電站颈抚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嚼鹉。R本人自食惡果不足惜贩汉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锚赤。 院中可真熱鬧匹舞,春花似錦、人聲如沸线脚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至姊舵,卻和暖如春晰绎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背括丁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工荞下, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人史飞。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓尖昏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親构资。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抽诉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355