你寫過的最好的 Python 腳本是什麼?
源自:Python (programming language): What are the best Python scripts youve ever written?
想看到更多的更酷的東西 :- |
我們公司辦公環境是window,開發環境是unix(可以近似認為所有人工作在同一台機器上,大部分人的目錄許可權都是755。。。),為了防止開發代碼流出到外網,windows與unix之間沒有網路連接,我們只能遠程登陸到一個跳轉伺服器再遠程登陸到unix上,如果有unix網內的文件需要傳出到windows網中,需要領導嚴格審批(反方向沒問題,有專用ftp伺服器)。對於通信專業畢業的我,最不能忍受的場景就是沒有建立起雙向通信。於是,為了可以將unix網內的數據傳出來,我用python將二進位數據轉化為圖像,每個像素點可以表示3個位元組,再將圖像外圍增加寬度為1的黑色邊框,外面再增加寬度為1像素的白色邊框,作為圖像邊界的標識符。這樣,我在windows下截圖,用python進行逆操作,數據就完好的解出來了!這樣一次至少可以傳1MB多的文件(屏幕越大傳的越多),7z壓縮一下,可以傳很多文本了。如果需要傳更多,還可以搞成動畫。。。腳本一共只有幾十行,卻大大提高了我後來工作的效率。python好爽,我愛python!
Python 在線編輯器
這是我用 python 寫的一個可以在網頁上編寫並執行 python 代碼的編輯器。支持基本的語法和模塊。但出於安全考慮(當然也因為沒怎麼去完善),功能還比較受限。
寫代碼的時候可以自動補全,不過這是js的事情,跟python無關。
兩年多前寫的,最近又稍微優化了一下,增加了幾個語法和模塊的支持。另外增加了幾十個教學常式。做這個的目的是想方便公眾號讀者在微信裡面直接試驗代碼。
http://codegolf.stackexchange.com/
有點off topic但是這個站上有很多好玩的題目,加上好多好玩的回答。GitHub - larva-lang/larva-lang: The larva programming Language
貼個我看到的蠻實用的腳本有帶注釋
# -*- coding: utf-8 -*-
#---------------------------------------# 程序:百度貼吧爬蟲
# 版本:0.5# 作者:why# 日期:2013-05-16# 語言:Python 2.7# 操作:輸入網址後自動只看樓主並保存到本地文件# 功能:將樓主發布的內容打包txt存儲到本地。#---------------------------------------import string
import urllib2import re
#----------- 處理頁面上的各種標籤 -----------
class HTML_Tool: # 用非 貪婪模式 匹配 或者或者 空格 或者 超鏈接 或者 圖片 BgnCharToNoneRex = re.compile("( |
| |&|&
# 用非 貪婪模式 匹配 任意&<&>標籤
EndCharToNoneRex = re.compile("&<.*?&>")# 用非 貪婪模式 匹配 任意&
標籤
BgnPartRex = re.compile("&")
CharToNewLineRex = re.compile("(&|&|&
CharToNextTabRex = re.compile("&
# 將一些html的符號實體轉變為原始符號
replaceTab = [("<","&<"),(">",">"),("amp;",""),("amp;","""),("nbsp;"," ")]def Replace_Char(self,x):
x = self.BgnCharToNoneRex.sub("",x) x = self.BgnPartRex.sub("",x) x = self.CharToNewLineRex.sub("
",x) x = self.CharToNextTabRex.sub(" ",x) x = self.EndCharToNoneRex.sub("",x)
for t in self.replaceTab:
x = x.replace(t[0],t[1])
return xclass Baidu_Spider:
# 申明相關的屬性 def __init__(self,url): self.myUrl = url + ?see_lz=1 self.datas = [] self.myTool = HTML_Tool() print u已經啟動百度貼吧爬蟲,咔嚓咔嚓# 初始化載入頁面並將其轉碼儲存
def baidu_tieba(self):
# 讀取頁面的原始信息並將其從gbk轉碼 myPage = urllib2.urlopen(self.myUrl).read().decode("gbk") # 計算樓主發布內容一共有多少頁 endPage = self.page_counter(myPage) # 獲取該帖的標題 title = self.find_title(myPage) print u文章名稱: + title # 獲取最終的數據 self.save_data(self.myUrl,title,endPage)#用來計算一共有多少頁
def page_counter(self,myPage): # 匹配 "共有&12&頁" 來獲取一共有多少頁 myMatch = re.search(rclass="red">(d+?)&, myPage, re.S) if myMatch: endPage = int(myMatch.group(1)) print u爬蟲報告:發現樓主共有%d頁的原創內容 % endPage else: endPage = 0 print u爬蟲報告:無法計算樓主發布內容有多少頁!return endPage
# 用來尋找該帖的標題
def find_title(self,myPage): # 匹配 &xxxxxxxxxx&
找出標題 myMatch = re.search(r&# 文件名不能包含以下字元: / : * ? " &< &> |
title = title.replace(\,).replace(/,).replace(:,).replace(*,).replace(?,).replace(",).replace(&>,).replace(&<,).replace(|,) return title# 用來存儲樓主發布的內容
def save_data(self,url,title,endPage): # 載入頁面數據到數組中 self.get_data(url,endPage) # 打開本地文件 f = open(title+.txt,w+) f.writelines(self.datas) f.close() print u爬蟲報告:文件已下載到本地並打包成txt文件 print u請按任意鍵退出... raw_input();# 獲取頁面源碼並將其存儲到數組中
def get_data(self,url,endPage): url = url + pn= for i in range(1,endPage+1): print u爬蟲報告:爬蟲%d號正在載入中... % i myPage = urllib2.urlopen(url + str(i)).read() # 將myPage中的html代碼處理並存儲到datas裡面 self.deal_data(myPage.decode(gbk))# 將內容從頁面代碼中摳出來
def deal_data(self,myPage): myItems = re.findall(id="post_content.*?&>(.*?)&,myPage,re.S) for item in myItems: data = self.myTool.Replace_Char(item.replace("","").encode(gbk)) self.datas.append(data+
)
#-------- 程序入口處 ------------------
print u"""#---------------------------------------# 程序:百度貼吧爬蟲# 版本:1.0# 操作:輸入網址後自動只看樓主並保存到本地文件# 功能:將樓主發布的內容打包txt存儲到本地。#---------------------------------------"""# 以某小說貼吧為例子
# bdurl = 百度貼吧print u請輸入貼吧的地址最後的數字串:
bdurl = 百度--您的訪問出錯了 + str(raw_input(u百度--您的訪問出錯了)) #調用mySpider = Baidu_Spider(bdurl)mySpider.baidu_tieba()說兩個和知乎相關的。
因為我本人並不認可「問題是大家的」的觀點,對每個人都可以編輯問題這個設定表示接受但不認同。所以每次看到有好事者把問題原題改得面目全非的時候,感覺就像吃了死蒼蠅一樣噁心。(雖然有問題日誌,但是大多數群眾不會去看。)
終於有一天,我被某人噁心得受不了了,就用python寫了一個腳本:對於某個問題,每10秒刷新一次,當發現有人把問題改動得和設想的不一樣,那就再自動改回來——這不是什麼過激手段,也只不過利用規則而已。這個腳本至今用過兩次,看日誌,著實噁心到了幾個所謂「公共編輯計劃」的同學——想像下,偷偷摸摸凌晨兩三點修改問題,不到10秒就被改回原樣,那種抓狂的表情。
另一個例子,我本人喜歡關注妹子,所以關注的人很多,這樣帶來幾個問題:一個是tl太雜,一個是逼格不夠高。所以需要定時清理一下。於是寫腳本抓取了所以關注人的性別、問題數、贊同數、近期活躍時間等等特徵,然後提取一百個作為訓練數據,人工標註是否需要取關,再使用線性模型訓練,判斷哪些關注的價值比較低,好定期清理。(目前還沒有清理過,因為還在對關注者價值機器學習的結果進行評估。)
作為程序員,自娛自樂還是有些意思的,python干這些很順手。批量下載Pixiv圖片的腳本2333
寫過一個迅雷雲播推送到xbmc上播放的腳本,很簡單,也沒什麼技術含量,但是對於喜歡看電影的人,真的是一大福利啊,免費使用迅雷雲播,通過xbmc用大電視看高清
腳本地址
https://gist.github.com/zhu327/987f3fc288ca55939e73xbmc是在樹莓派上用的,一般720p+外掛字幕毫無壓力,另外附上樹莓派用xbmc心得一篇http://bozpy.sinaapp.com/blog/13輸入動漫名(模糊匹配)和集數,直接獲取到下載URL,貼到迅雷馬上使用http://www.kylen314.com/archives/5729
確認安裝好urllib2和webscraping庫,然後粘貼此代碼到pythonIDE里運行,過一會兒打開d盤的f.txt 你懂的!
# -*- coding: UTF-8 -*-
__author__ = ftium4.com
#導入urllib2庫,用於獲取網頁
import urllib2
#使用開源庫webscraping庫的xpath模塊
from webscraping import xpath,common
def get_data(url):
req = urllib2.Request(url)
req.add_header(User-Agent, Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 (FoxPlus) Firefox/2.0.0.14)
#獲得響應
reponse = urllib2.urlopen(req)
#將響應的內容存入html變數
html = reponse.read()
#以下抓取頁面的番號和片名
title = xpath.search(html, //div[@class="av style1"]/a[1]/@title)
return title
#創建文本用於保存採集結果
f=open(rD:f.txt,w)
for p in range(1,494):
url = rhttp://dmm18.net/index.php?pageno_b=%s%p
print url
title = get_data(url)
for item1 in title:
#將採集結果寫入文本中
f.write(str(item1)+
)
print item1
f.close()
公司招文員,招前台,還有一些其他妹子的非關鍵職位,每天百來封簡歷,一個一個點進去看太麻煩。寫了個爬蟲腳本,自動進郵箱把所有的簡歷照片下載下來,做成照片牆。一幫程序猿看簡歷就方便多了。:)
批量下載網易公開課
上海個人車牌拍賣程序的驗證碼識別……坑爹的是,寫的時候參照拍賣程序的demo來訓練數據,真的拍的時候,下發的驗證碼跟demo程序的完全不一樣,導致第一次拍牌失敗
謝邀。當年玩 http://projecteuler.net/ 的時候寫過一些很雞賊的小腳本,有興趣可以看看 https://github.com/riobard/project-euler/blob/master/euler.py
想起以前和沈遊俠聊天的一個笑話代碼開始 True, False = False, True然後開始寫 Python 程序
e紳士下載器