你用 Python 寫過哪些牛逼的程序/腳本?

2022-01-10 數學與人工智慧

有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。本文摘編了 3 個國外程式設計師的多個小項目,含代碼。

Manoj Memana Jayakumar, 3000+ 頂

更新:憑藉這些腳本,我找到了工作!可看我在這個帖子中的回覆,《Has anyone got a job through Quora? Or somehow made lots of money through Quora?》

1. 電影/電視劇 字幕一鍵下載器

我們經常會遇到這樣的情景,就是打開字幕網站subscene 或者opensubtitles, 搜索電影或電視劇的名字,然後選擇正確的抓取器,下載字幕文件,解壓,剪切並粘貼到電影所在的文件夾,並且需把字幕文件重命名以匹配電影文件的名字。是不是覺得太無趣呢?對了,我之前寫了一個腳本,用來下載正確的電影或電視劇字幕文件,並且存儲到與電影文件所在位置。所有的操作步驟僅需一鍵就可以完成。懵逼了嗎?

請看這個 Youtube 視頻:https://youtu.be/Q5YWEqgw9X8

原始碼存放在GitHub:subtitle-downloader

更新:目前,該腳本支持多個字幕文件同時下載。步驟:按住 Ctrl ,選擇你想要為其下載字幕的多個文件 , 最後執行腳本即可

2. IMDb 查詢/電子表格生成器

我是一個電影迷,喜歡看電影。我總是會為該看哪一部電影而困惑,因為我搜集了大量的電影。所以,我應該如何做才能消除這種困惑,選擇一部今晚看的電影?沒錯,就是IMDb。我打開 http://imdb.com,輸入電影的名字,看排名,閱讀和評論,找出一部值得看的電影。

但是,我有太多電影了。誰會想要在搜索框輸入所有的電影的名字呢? 我肯定不會這樣做,尤其是我相信「如果某些東西是重複性的,那麼它應該是可以自動化的」。因此,我寫了一個 python 腳本, 目的是為了使用 非官方的 IMDb API 來獲取數據。我選擇一個電影文件(文件夾),點擊右鍵,選擇『發送到』,然後 點擊 IMDB.cmd (順便提一下,IMDB.cmd 這個文件就是我寫的 python 腳本),就是這樣。

我的瀏覽器會打開這部電影在IMDb網站上的準確頁面。

僅僅只需點擊一個按鍵,就可以完成如上操作。如果你不能夠了解這個腳本到底有多酷,以及它可以為你節省多少時間,請看這個 Youtube 視頻:https://youtu.be/JANNcimQGyk

從現在開始,你再也不需要打開你的瀏覽器,等待加載IMDb的頁面,鍵入電影的名字。這個腳本會幫你完成所有的操作。跟往常一樣,原始碼放在了GitHub:imdb ,並且附有操作說明。當然,由於這個腳本必須去掉文件或文件夾中的無意義的字符,比如「DVDRip, YIFY, BRrip」等,所以在運行腳本的時候會有一定比例的錯誤。但是經過測試,這個腳本在我幾乎所有的電影文件上都運行的很好。

2014-04-01更新:

許多人在問我是否可以寫一個腳本,可以發現一個文件夾中所有電影的詳細信息,因為每一次只能發現一個電影的詳細信息是非常麻煩的。我已經更新了這個腳本,支持處理整個文件夾。腳本會分析這個文件夾裡的所有子文件夾,從 IMDb上抓取所有電影的詳細信息 ,然後打開一個電子表格,根據IMDb 上的排名,從高到低降序排列所有的電影。這個表格中包含了 (所有電影)在 IMDb URL, 年份,情節,分類,獲獎信息,演員信息,以及其他的你可能在 IMBb找到的信息。下面是腳本執行後,生成的表格範例:


Your very own personal IMDb database! What more can a movie buff ask for? ;)
Source on GitHub: imdb

你也可以有一個個人 IMDb 資料庫!一個電影愛好者還能夠要求更多嗎?:)

原始碼在 GitHubimdb

3. theoatmeal.com 連載漫畫下載器

 

我個人超級喜歡 Matthew Inman 的漫畫。它們在瘋狂搞笑的同時,卻又發人深省。但是,我很厭煩重複點擊下一個,然後才能閱讀每一個漫畫。另外,由於每一個漫畫都由多福圖片組成,所以手動下載這些漫畫是非常困難的。

基於如上原因,我寫了一個 python 腳本 ,用來從這個站點下載所有的漫畫。這個腳本利用 BeautifulSoup (http://www.crummy.com/software/B… ) 解析 HTML 數據, 所以在運行腳本前,必須安裝 BeautifulSoup。 用於下載燕麥片(馬修.英曼的一部漫畫作品)的下載器已經上傳到GitHub:theoatmeal.com-downloader  。(漫畫)下載完後的文件夾是這樣的 :D

 4. someecards.com 下載器

成功地從http://www.theoatmeal.com 下載了整部漫畫後,我在想是否我可以做同樣的事情 , 從另一個我喜歡的站點— 搞笑的,唯一的http://www.someecards.com . 下載一些東西呢?

somececards 的問題是,圖片命名是完全隨機的,所有圖片的排放沒有特定的順序,並且一共有52 個大的類別, 每一個類別都有數以千計的圖片。

我知道,如果我的腳本是多線程的話,那將是非常完美的,因為有大量的數據需要解析和下載,因此我給每一個類別中的每一頁都分配一個線程。這個腳本會從網站的每一個單獨的分類下載搞笑的電子賀卡,並且把每一個放到單獨的文件夾。現在,我擁有這個星球上最好笑的電子賀卡私人收藏。下載完成後,我的文件夾是這樣的:

沒錯,我的私人收藏總共包括:52個類別,5036個電子賀卡。 原始碼在這裡:someecards.com-downloader 

編輯:很多人問我是否可以共享我下載的所有文件,(在這裡,我要說)由於我的網絡不太穩定,我沒辦法把我的收藏上傳到網絡硬碟,但是我已經上傳一個種子文件,你們可以在這裡下載:somecards.com Site Rip torrent

種下種子,傳播愛:)

Akshit Khurana,4400+ 頂感謝 500 多個朋友在 Facebook 上為我送出的生日祝福

有三個故事讓我的21歲生日變的難忘,這是最後一個故事。我傾向於在每一條祝福下親自評論,但是使用 python 來做更好。

1. # Thanking everyone who wished me on my birthday

2. import requests

3. import json

4.

5. # Aman's post time

6. AFTER = 1353233754

7. TOKEN = '  '

8.

9. def get_posts():

10.     """Returns dictionary of id, first names of people who posted on my wall

11.     between start and end time"""

12.     query = ("SELECT post_id, actor_id, message FROM stream WHERE "

13.             "filter_key = 'others' AND source_id = me() AND "

14.             "created_time > 1353233754 LIMIT 200")

15.

16.     payload = {'q': query, 'access_token': TOKEN}

17.     r = requests.get('https://graph.facebook.com/fql', params=payload)

18.     result = json.loads(r.text)

19.     return result['data']

20.

21. def commentall(wallposts):

22.     """Comments thank you on all posts"""

23.     #TODO convert to batch request later

24.     for wallpost in wallposts:

25.

26.         r = requests.get('https://graph.facebook.com/%s' %

27.                 wallpost['actor_id'])

28.         url = 'https://graph.facebook.com/%s/comments' % wallpost['post_id']

29.         user = json.loads(r.text)

30.         message = 'Thanks %s :)' % user['first_name']

31.         payload = {'access_token': TOKEN, 'message': message}

32.         s = requests.post(url, data=payload)

33.

34.         print "Wall post %s done" % wallpost['post_id']

35.

36. if __name__ == '__main__':

37.     commentall(get_posts())

為了能夠順利運行腳本,你需要從Graph API Explorer(需適當權限)獲得 token。 本腳本假設特定時間戳之後的所有帖子都是生日祝福。

儘管對評論功能做了一點改變,我仍然喜歡每一個帖子。

當我的點讚數,評論數以及評論結構在 ticker(Facebook一項功能,朋友可以看到另一個朋友在做什麼,比如點讚,聽歌,看電影等) 中爆漲後,我的一個朋友很快發現此事必有蹊蹺。

儘管這個不是我最滿意的腳本,但是它簡單,快捷,有趣。

當我和 Sandesh Agrawal 在網絡實驗室討論時,有了寫這個腳本的想法。 為此,Sandesh Agrawal 耽擱了實驗室作業,深表感謝。

Tanmay Kulshrestha,3300+ 頂

好了,在我失去這個項目之前(一個豬一樣的朋友格式化了我的硬碟,我的所有代碼都在那個硬碟上)或者說,在我忘記這些代碼之前,我決定來回答這個問題。

整理照片

當我對圖像處理感興趣之後,我一直致力於研究機器學習。我寫這個有趣的腳本,目的是為了分類圖片,很像 Facebook 做的那樣(當然這是一個不夠精確的算法)。 我使用了 OpenCV 的人臉檢測算法,「haarcascade_frontalface_default.xml」,它可以從一張照片中檢測到人臉。

你可能已經察覺到這張照片的某些地方被錯誤地識別為人臉。 我試圖通過修改一些參數(來修正這一問題),但還是某些地方被錯誤地識別為人臉,這是由相機的相對距離導致的。我會在下一階段解決這一問題(訓練步驟)。

這個訓練算法需要一些訓練素材,每個人需要至少需要100-120個訓練素材(當然多多益善)。 我太懶了,並沒有為每一個人挑選照片,並把它們複製粘帖到訓練文件夾。所以,你可能已經猜到,這個腳本會打開一個圖片,識別人臉,並顯示每一個人臉(腳本會根據處於當前節點的訓練素材給每一個人臉預測一個名字)。伴隨著每次你標記的照片,Recognizer 會被更新,並且還會包含上一次的訓練素材。 在訓練過程中,你可以增加新的名字。我使用 python 庫 tkinter 做了一個 GUI。 因此,大多數時候,你必須初始化一小部分照片(給照片中的人臉命名),其他的工作都可以交給訓練算法。 因此,我訓練了 Recognizer ,然後讓它(Recognizer)去處理所有的圖片。

我使用圖片中包含的人的人名來命名圖片,(例如: Tanmay&*****&*****)。 因此,我可以遍歷整個文件夾,然後可以通過輸入人名的方法來搜索圖片。

初始狀態下,當一個人臉還沒有訓練素材時(素材庫中還沒有包括這個人臉的名字),需要詢問他/她的名字。

我可以增加一個名字,像這個樣子:

當訓練了幾個素材後,它會像這個樣子:

最後一個是針對應對那些垃圾隨機方塊而使用的變通解決方案。

帶名字的最終文件夾。

所以,現在尋找圖片變得相當簡單。順便提一下,很抱歉(我)放大了這些照片。

import cv2

import sys

import os,random,string

#choices=['Add a name']

import os

current_directory=os.path.dirname(os.path.abspath(__file__))

from Tkinter import Tk

from easygui import *

import numpy as np

x= os.listdir(current_directory)

new_x=[]

testing=[]

for i in x:

if i.find('.')==-1:

new_x+=[i]

else:

testing+=[i]

x=new_x

g=x

choices=['Add a name']+x

y= range(1,len(x)+1)

def get_images_and_labels():

global current_directory,x,y,g

if x==[]:

return (False,False)

image_paths=[]

for i in g:

path=current_directory+''+i

for filename in os.listdir(path):

final_path=path+''+filename

image_paths+=[final_path]

# images will contains face images

images = []

# labels will contains the label that is assigned to the image

labels = []

for image_path in image_paths:

# Read the image and convert to grayscale

img = cv2.imread(image_path,0)

# Convert the image format into numpy array

image = np.array(img, 'uint8')

# Get the label of the image

backslash=image_path.rindex('')

underscore=image_path.index('_',backslash)

nbr = image_path[backslash+1:underscore]

t=g.index(nbr)

nbr=y[t]

# If face is detected, append the face to images and the label to labels

images.append(image)

labels.append(nbr)

#cv2.imshow("Adding faces to traning set...", image)

#cv2.waitKey(50)

# return the images list and labels list

return images, labels

# Perform the tranining

def train_recognizer():

recognizer = cv2.createLBPHFaceRecognizer()

images, labels = get_images_and_labels()

if images==False:

return False

cv2.destroyAllWindows()

recognizer.train(images, np.array(labels))

return recognizer

def get_name(image_path,recognizer):

global x,choices

#if recognizer=='':

# recognizer=train_recognizer()

cascadePath = "haarcascade_frontalface_default.xml"

faceCascade = cv2.CascadeClassifier(cascadePath)

#recognizer=train_recognizer()

x1=testing

global g

print image_path

image = cv2.imread(image_path)

img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

predict_image = np.array(img, 'uint8')

faces = faceCascade.detectMultiScale(

img,

scaleFactor=1.3,

minNeighbors=5,

minSize=(30, 30),

flags = http://cv2.cv.CV_HAAR_SCALE_IMAGE

)

for (x, y, w, h) in faces:

f= image[y:y+w,x:x+h]

cv2.imwrite('temp.jpg',f)

im='temp.jpg'

nbr_predicted, conf = recognizer.predict(predict_image[y: y + h, x: x + w])

predicted_name=g[nbr_predicted-1]

print "{} is Correctly Recognized with confidence {}".format(predicted_name, conf)

if conf>=140:

continue

msg='Is this '+predicted_name

reply = buttonbox(msg, image=im, choices=['Yes','No'])

if reply=='Yes':

reply=predicted_name

directory=current_directory+''+reply

if not os.path.exists(directory):

os.makedirs(directory)

random_name=''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(7))

path=directory+''+random_name+'.jpg'

cv2.imwrite(path,f)

else:

msg = "Who is this?"

reply = buttonbox(msg, image=im, choices=choices)

if reply == 'Add a name':

name=enterbox(msg='Enter the name', title='Training', strip=True)

print name

choices+=[name]

reply=name

directory=current_directory+''+reply

if not os.path.exists(directory):

os.makedirs(directory)

random_name=''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(7))

path=directory+''+random_name+'.jpg'

print path

cv2.imwrite(path,f)

 

# calculate window position

root = Tk()

pos = int(root.winfo_screenwidth() * 0.5), int(root.winfo_screenheight() * 0.2)

root.withdraw()

WindowPosition = "+%d+%d" % pos

 

# patch rootWindowPosition

rootWindowPosition = WindowPosition

def detect_faces(img):

global choices,current_directory

imagePath = img

faceCascade = cv2.CascadeClassifier(cascPath)

image = cv2.imread(imagePath)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(

gray,

scaleFactor=1.3,

minNeighbors=5,

minSize=(30, 30),

flags = http://cv2.cv.CV_HAAR_SCALE_IMAGE

)

 

print "Found {0} faces!".format(len(faces))

m=0

for (x, y, w, h) in faces:

m+=1

padding=0

f= image[y-padding:y+w+padding,x-padding:x+h+padding]

cv2.imwrite('temp.jpg',f)

im='temp.jpg'

msg = "Who is this?"

reply = buttonbox(msg, image=im, choices=choices)

if reply == 'Add a name':

name=enterbox(msg='Enter the name', title='Training', strip=True)

print name

choices+=[name]

reply=name

directory=current_directory+''+reply

if not os.path.exists(directory):

os.makedirs(directory)

random_name=''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(7))

path=directory+''+random_name+'.jpg'

print path

cv2.imwrite(path,f)

def new(img,recognizer):

imagePath = current_directory+''+img

print imagePath

get_name(imagePath,recognizer)

cascPath = 'haarcascade_frontalface_default.xml'

b=0

os.system("change_name.py")

for filename in os.listdir("."):

b+=1

if b%10==0 or b==1:

os.system("change_name.py")

recognizer=train_recognizer()

if filename.endswith('.jpg') or filename.endswith('.png'):

print filename

imagePath=filename

#detect_faces(imagePath)

new(imagePath,recognizer)

os.remove(filename)

raw_input('Done with this photograph')

我想進一步修改它的搜索功能,其中會包含更多的搜索類型,比如基於地理位置,微笑的臉,傷心的臉等等。(這樣我就可以在 Skylawns 上 搜索快樂的 Tanmay & 沮喪的 Akshay & 快樂的…)

我還寫了很多腳本,但那都是很久之前的事情了,我也懶得再去檢查這些代碼了,我會列出部分代碼。

GitHub 連結:tanmay2893/Image-Sorting

Gmail 郵件通知

在那段時間,我沒有智慧型手機。 導致我常常錯過來自於我所在的研究所的郵件(在我的研究所的郵件 ID),我寫了一個腳本,可以在我的筆記本上運行,而且能給我的手機發信息。我使用 python 的 IMAP 庫來獲取郵件。我可以輸入一些重要的人的名字,這樣一來,當這些人給我發了郵件後,我可以收到簡訊通知。對於簡訊, 我使用了 way2sms.com(寫了一個 python 腳本,自動登陸我的帳戶,然後發送 簡訊)。

PNR(Passenger Name Record旅客訂座記錄,下同) 狀態短訊

鐵路方面不經常發送 PNR 狀態消息。因此,我寫了一個腳本,可以從印度鐵路網站獲取 PNR 狀態。這是非常容易的,因為那個網站沒有驗證碼,即使有,也只是形同虛設的驗證碼(在過去,一些字母會被寫在看起來像圖片一樣的東西上面,因為他們為這些字母使用了一個 「check」 的背景圖)。 我們可以輕鬆地從 HTML 網頁得到這些字母。我不明白他們這樣做的目的是什麼,難道僅僅是為了愚弄他們自己嗎? 不管怎麼樣,我使用簡訊息腳本來處理它,經過一段時間間隔,它會在我的筆記本上運行一次,就像是一個定時任務,只要 PNR 狀態有更新,它就會把更新信息發送給我。

YouTube 視頻下載器

這個腳本會從 Youtube 頁面下載所有的 Youtube 視頻 以及他們所有的字幕文件(從Download and save subtitles 下載)。為了使下載速度更快一點,我使用了多線程。還有一個功能是,即使你的電腦重啟了,仍然可以暫停和恢復播放下載的(視頻)。我原本想做一個UI的,但是我太懶了… 一旦我的下載任務完成,我就不去關心 UI 的事情了。

板球比分通知器

我猜想這個功能已經在別的地方提到過了。一個窗口通知器。(在右下角的通知區域,它會告訴你實時比分以及評論信息)。如果你願意的化,在某些時間段,你也可以關掉它。

WhatsApp 消息

這個並不太實用,我只是寫著玩玩。因為 Whatsapp 有網頁版,我使用 selenium 和 Python 下載我的所有聯繫人的顯示圖片,並且,一旦有人更新了他們的顯示圖片,我將會知道。(如何做到的?非常簡單,在設定好時間間隔後,我會一遍又一遍的不停下載所有的頭像信息,一旦照片的尺寸發生變化,我將會知道他/她更新了顯示圖片)。然後我會給他/她發一個信息,不錯的頭像。我僅僅使用了一次來測試它的可用性。

Nalanda 下載器

我們一般在這個叫 『Nalanda』 的網站上下載一些教學課件以及其他的課程資料, 『Nalanda』 在 BITS Pilani (Nalanda).  我自己懶得在考試前一天下載所有的課件,所以,我寫了這個這個下載器,它可以把每一門科的課件下載到相應的文件夾。

代碼:

import mechanize,os,urllib2,urllib,requests,getpass,time

start_time = time.time()

from bs4 import BeautifulSoup

br=mechanize.Browser()

br.open('https://nalanda.bits-pilani.ac.in/login/index.php')

br.select_form(nr=0)

    

name=''

while name=='':

    try:

        print '*******'

        username=raw_input('Enter Your Nalanda Username: ')

        password=getpass.getpass('Password: ')

        br.form['username']=username

        br.form['password']=password

        res=br.submit()

        response=res.read()

        soup=BeautifulSoup(response)

        name=str(soup.find('div',attrs={'class':'logininfo'}).a.string)[:-2]

    except:

        print 'Wrong Password'

f=open('details.txt','w')

f.write(username+'n'+password)

f.close()

print 'Welcome, '+name

print 'All the files will be downloaded in your Drive C in a folder named "nalanda"'

#print soup.prettify()

div=soup.find_all('div',attrs={'class':'box coursebox'})

l=len(div)

a=[]

for i in range(l):

    d=div[i]

    s=str(d.div.h2.a.string)

    s=s[:s.find('(')]

    c=(s,str(d.div.h2.a['href']))

    path='c:nalanda'+c[0]

    if not os.path.exists(path):

        os.makedirs(path)

    a+=[c]

#print a

overall=[]

for i in range(l):

    response=br.open(a[i][1])

    page=response.read()

    soup=BeautifulSoup(page)

    li=soup.find_all('li',attrs={'class':'section main clearfix'})

    x=len(li)

    t=[]

    folder=a[i][0]

    print 'Downloading '+folder+' files...'

    o=[]

    for j in range(x):

        g=li[j].ul

        #print g

        #raw_input('')

        if g!=None:

            temp=http://g.li['class'].split(' ')

            #raw_input('')

            if temp[1]=='resource':

                #print 'yes'

                #print '********************'

                o+=[j]

                h=li[j].find('div',attrs={'class':'content'})

                s=str(h.h3.string)

                path='c:nalanda'+folder

                if path[-1]==' ':

                    path=path[:-1]

                path+=''+s

                if not os.path.exists(path):

                    os.makedirs(path)

                f=g.find_all('li')

                r=len(f)

                z=[]

                for e in range(r):

                    p=f[e].div.div.a

                    q=f[e].find('span',attrs={'class':'resourcelinkdetails'}).contents

                    link=str(p['href'])

                    text=str(p.find('span').contents[0])

                    typ=''

                    if str(q[0]).find('word')!=-1:

                        typ='.docx'

                    elif str(q[0]).find('JPEG')!=-1:

                        typ='.jpg'

                    else:

                        typ='.pdf'

                    if typ!='.docx':

                        res=br.open(link)

                        soup=BeautifulSoup(res.read())

                        if typ=='.jpg':

                            di=soup.find('div',attrs={'class':'resourcecontent resourceimg'})

                            link=di.img['src']

                        else:

                            di=soup.find('div',attrs={'class':'resourcecontent resourcepdf'})

                            link=di.object['data']

                    try:

                        if not os.path.exists(path+''+text+typ):

                            br.retrieve(link,path+''+text+typ)[0]

                    except:

                        print 'Connectivity Issues'

                    z+=[(link,text,typ)]

                t+=[(s,z)]

    if t==[]:

        print 'No Documents in this subject'

    overall+=[o]

    #raw_input('Press any button to resume')

#print overall

print 'Time Taken to Download: '+str(time.time()-start_time)+ ' seconds'

print 'Do you think you can download all files faster than this :P'

print 'Closing in 10 seconds'

time.sleep(10)

我自己的 DC++

這個腳本並不是很有用,目前只有一些學生在用它, 況且,DC ++ 已經提供了一些很酷的功能。我原本可以優化我自己的版本,但是,由於我們已經有了DC ++,我並沒有這麼做,儘管我已經使用 nodeJS 和 python 寫了一個基礎版本。

工作原理:

打開 DC++ , 進入一個中心站點,然後連接,我寫了一個 python 腳本來做這件事。 腳本會在 PC上創建一個伺服器(可以通過修改 SimpleHTTPRequestHandler 來完成)。

在伺服器端(使用了NodeJS),它會拿到 PC 的連接,共享給其他的用戶。

這個是主頁面:

這個頁面顯示了所有的用戶和他們的連結。因為我給 Nick 加了一個超連結,所以在連結這一攔是空的。

所以,當用戶數量增加以後,這個頁面會列出所有的用戶列表。基本上,這個頁面充當了一個你和另外一個人聯繫的中間人角色。 我還做了一個在所有用戶中搜索特定文件的功能。

這裡是客戶端的 python 文件(這是一段很長的代碼,我上傳到了 Ideone)

所有這些代碼僅僅用於教育目的。

相關焦點

  • Python | 你用 Python 寫過最牛逼的程序/腳本是什麼?
    編譯:Python開發者 - Jake_on  英文:Quorahttp://python.jobbole.com/85986/有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。本文摘編了 3 個國外程式設計師的多個小項目,含代碼。
  • 這些用 Python 寫的牛逼程序/腳本,你玩過嗎?
    /85986/有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。因此,我寫了一個 python 腳本, 目的是為了使用 非官方的 IMDb API 來獲取數據。我選擇一個電影文件(文件夾),點擊右鍵,選擇『發送到』,然後 點擊 IMDB.cmd (順便提一下,IMDB.cmd 這個文件就是我寫的 python 腳本),就是這樣。
  • 你用 Python 寫過最牛逼的程序是什麼?
    有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。因此,我寫了一個 python 腳本, 目的是為了使用 非官方的 IMDb API 來獲取數據。我選擇一個電影文件(文件夾),點擊右鍵,選擇『發送到』,然後 點擊 IMDB.cmd (順便提一下,IMDB.cmd 這個文件就是我寫的 python 腳本),就是這樣。
  • 這些用 Python 寫的牛掰程序/腳本,你玩過嗎?
    /85986/有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。因此,我寫了一個 python 腳本, 目的是為了使用 非官方的 IMDb API 來獲取數據。我選擇一個電影文件(文件夾),點擊右鍵,選擇『發送到』,然後 點擊 IMDB.cmd (順便提一下,IMDB.cmd 這個文件就是我寫的 python 腳本),就是這樣。
  • 用 Python 做個簡單的備份腳本程序
    程式設計師是個任性的群體,因為如果他經常在網絡找資源的話,會寫個腳本程序進行資源的抓取;如果系統自帶的一些軟體不好用,會自己寫個腳本程序,簡單好用…
  • python應用(2):寫個python程序給自己用
    用python寫一個程序,然後在命令行上執行,看不到界面(UI),這種程序很常見了,叫命令行程序。
  • 一些牛逼的Python程序整理
    有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。本文摘編了 3 個國外程式設計師的多個小項目,含代碼。
  • 源碼:自己用Python寫的iOS項目自動打包腳本
    然而對於這個自己應盡的義務我已經煩透了,先不說要配置各種參數什麼的,光是用xcode打包時候clean代碼,驗證證書就讓我焦頭爛額,時不時還要翻個牆甚至要手機開個熱點才能打包成功。每次打包順利的話,也要7~8分鐘,每天n個包,想早點完成任務準時下班想都別想了。於是做了個打包的腳本(然後歡樂的像狗了)。好了,廢話不多說,下面來介紹一下這個腳本,希望能給你帶來方便。
  • 整理Python常用庫,看看哪些用過的?
    Psyco,超強的python性能優化工具,psyco 的神奇在於它只需要在代碼的入口處調用短短兩行代碼,性能就能提升 40% 或更多,真可謂是立竿見影!如果你的客戶覺得你的程序有點慢,敬請不要急著去優化代碼,psyco 或許能讓他立即改變看法。psyco 堪稱 Python 的 jit。fn.py,Python函數編程:缺失的功能享受FP的實現。funcy,函數編程工具。
  • python程式設計師開發必備的5大工具,你用過幾個?
    利用python開發,大牛用vim,接了2個顯示器寫python,氣場甚是強大。  有些程式設計師表示,jetbrains全家桶解決一切。還有的程式設計師說:sublime+python插件足矣!  那麼,有哪些值得推薦的Python開發工具呢?下面w3cschool就開始分享乾貨:  0、Anaconda  Anaconda簡直是做數據分析的利器。
  • 最簡單的方式發布你的Python應用
    我們不是龍哥,寫不出牛逼的 foxmail,但是寫個自動化的腳本還是可以的,即使是一個小小的腳本,只要能提供幫助,其他人也是有需求的。那麼如何將你寫的程序發布給其他人用呢?今天分享一下非常簡單可行的方式發布 Python 應用程式,發布後用戶只需要雙擊一個文件就可以啟動你的應用程式,不懂任何技術的人都會使用。
  • 七夕用python給男朋友寫的小程序,感動哭了.
    七夕將至,給男朋友寫了個小程序,把他感動哭了,把我可累慘了。可樂我也不是程序媛專門敲代碼的,雖然也學過,但也僅局限於用pandas處理一下數據的程度,要寫一個界面並且能讓對方直接打開,有點超綱。但是經過5天的不懈努力,終於也算寫出來了,就長下面這個樣子,其實就是Python裡用tkinter模塊做的一個GUI圖形界面。
  • 一個小破網站,居然比 Python 官網還牛逼
    大家好,我是明哥哥~前兩天,我發現有個前同事寫的 Shell 腳本經常在出問題,考慮這個腳本一直挺不穩定的,維護起來也挺頭疼,原因是 Shell 腳本寫稍微複雜一點的邏輯,代碼就變得十分臃腫,對比 Python 真的太差勁了。
  • 一個神奇的腳本,一鍵運行各類程序(for Notepad++)
    【原創,轉載請註明來自公眾號『數據挖掘機養成記』】前言一年前,我在公眾號裡寫過一篇文章 『windows下用Notepad++開發Python、C/C++』,大概講了如何用notepad++內置的運行命令來編譯運行相應程序,現在看來,略顯簡陋了如今,我將分享一個前陣子琢磨了一整天寫的 notepad++ 腳本給大家,可以
  • GitHub最火的Python庫|看看你用過幾個
    ,經常走走看看,會有很多好東西,讓你眼前一亮!馬上年底了我們來看看GitHub上都有哪些超高人氣的Python庫,小夥伴們一起來看看吧!1.Tensorflow 人氣指數:83695大名鼎鼎的TensorFlow 是來自谷歌的一個用於人工智慧的開源工具.它採用數據流圖(data flow graphs)用於數值計算的開源軟體庫。
  • Python應用行業有哪些?能開發QQ和瀏覽器等軟體嗎
    下面我們就來看看,Python具體能開發哪些軟體,應用領域具體是哪些。一、人工智慧,包括數據分析、計算機視覺、自然語言處理等等現在python已經基本成了人工智慧的標準語言了,一般都是C/C++寫個底層運算庫,然後用python做腳本。
  • 25條實用的Python一行代碼,你用過哪些?
    在下面,我將給大家介紹並解釋一些非常實用Python一行程序。可能有些你還不知道,但對你未來的Python項目很有用。▍1、交換兩個變量# a = 4 b = 5a,b = b,a# print(a,b) >> 5,4讓我們通過交換兩個變量作為一個簡單的開始。
  • python腳本pdb調試工具使用
    pdb是linux的python調試工具,它功能比較齊全,使用起來也很方便, 按一般運維工程師的技術發展來說,最早接觸程式語言應該是shell,
  • 那個寫腳本的架構師,被開除了...
    我對Linux非常的精通,尤其是腳本語言比如sed、awk、python等,用起來更是爐火純青。我把它作為自己一個非常特立獨行的技能,一個和其他普通程式設計師區別開來的技能。所以在我寫腳本的時候,我都會自豪的抬高我的頭,鼻孔朝天冥思精悍的code。
  • 利用Python進行遊戲腳本編程,不愧是最強的腳本語言!
    缺乏自省能力 [TR2: introspection]:C++ 有自己的方式知道一個類中包含哪些成員,但是這種方式需要編寫過多的加載和存儲對象的代碼,而在一些腳本語言中這只需調用一個內建函數就可以完成。C++ 是靜態的,而腳本語言是動態的。簡單地說,C++ 的程序運行地很快,但是腳本語言能讓你編碼更快。所以,C++ 應該只用在你希望優化運行時性能的地方。