教材太貴?一小段Python代碼幫你自動(dòng)翻頁(yè)和掃描
反思通常是一件有益的事,對(duì)程序員來(lái)說(shuō)就更是如此。我的***個(gè)Python項(xiàng)目距今已經(jīng)兩年,但我仍然常常想起它,所以我寫(xiě)了這篇文章與大家分享。作為一名航空航天工程專業(yè)的學(xué)生,我***次學(xué)習(xí)Python是想要避免使用電子表格。當(dāng)時(shí)的我還不知道這是一個(gè)多么明智的決定。
我的Python啟蒙書(shū)是Al Sweigart先生寫(xiě)的《Python編程快速上手——讓繁瑣工作自動(dòng)化》(Automate the Boring Stuff with Python)。這是一本很好的應(yīng)用型書(shū)籍,它包含了一些能夠完成有用任務(wù)的簡(jiǎn)單程序。當(dāng)我面對(duì)一個(gè)新的問(wèn)題時(shí),我會(huì)尋找一切機(jī)會(huì)去使用它來(lái)解決問(wèn)題。當(dāng)時(shí)我遇到了一個(gè)亟待解決的問(wèn)題——我需要使用一本價(jià)格高達(dá)200刀的教材。
購(gòu)買一本教材,我個(gè)人的預(yù)算是不超過(guò)20刀(《讓繁瑣的工作自動(dòng)化》在網(wǎng)上可以免費(fèi)閱讀)。而且我不愿意去租書(shū)。
我很想在完成***次作業(yè)之前擁有這本教材。接下來(lái)我發(fā)現(xiàn)亞馬遜的新用戶有一周的免費(fèi)閱讀該書(shū)的權(quán)限。于是我利用這個(gè)免費(fèi)資源完成了***次的作業(yè)。雖然可以繼續(xù)每周創(chuàng)建新的賬號(hào)來(lái)讀書(shū),但我需要一個(gè)更好的辦法。于是我打開(kāi)了Python,開(kāi)始了我的***個(gè)編程應(yīng)用。
在《讓繁瑣的工作自動(dòng)化》這本書(shū)里,有很多有用的庫(kù)。pyautogui就是其中之一,它可以讓你通過(guò)Python控制鍵盤和鼠標(biāo)。
人們說(shuō)對(duì)于一個(gè)擁有錘子的人來(lái)說(shuō),所有的問(wèn)題看起來(lái)都像一顆釘子,這種說(shuō)法太貼切了。Python和pyautogui使我能夠自動(dòng)地點(diǎn)擊翻頁(yè)鍵并截屏。當(dāng)我把這兩個(gè)操作結(jié)合起來(lái)后,教材的問(wèn)題就迎刃而解了。
我寫(xiě)了我的***個(gè)程序來(lái)自動(dòng)翻閱每一頁(yè)并且截屏。雖然最終的代碼只有十行,我還是很驕傲,就像我在航空航天工程領(lǐng)域取得成就一樣自豪。
以下是我的完整的代碼:
- import pyautogui
- import time# Sleep for 5 seconds to allow me to open book
- time.sleep(5)# Range can be changed depending on the number of pages
- for i in range(1000): # Turn page
- pyautogui.keyDown('right')
- pyautogui.keyUp('right') # Take and save a screenshot
- pyautogui.screenshot('images/page_%d.pdf' % i)
- time.sleep(0.05)
運(yùn)行這個(gè)代碼很簡(jiǎn)單(我建議大家都試一試)。我將腳本保存為book_sreenshot.py,然后在同一個(gè)文件夾里終止了命令符并寫(xiě)道:
- python book_screenshot.py
接下來(lái),我有五秒鐘的時(shí)間打開(kāi)書(shū)并開(kāi)至全屏。程序會(huì)完成接下來(lái)的事情:翻閱每一頁(yè)并截屏,保存至pdf格式。我會(huì)把所有的pdf頁(yè)面組合成一個(gè)文件,做成這本書(shū)的副本(不確定是否合法)。當(dāng)然,這是一個(gè)糟糕的副本,因?yàn)樗鼰o(wú)法被檢索。但是我找了一切借口去盡量使用這本“書(shū)”。
這個(gè)例子說(shuō)明了兩個(gè)關(guān)鍵點(diǎn),這兩點(diǎn)在我學(xué)習(xí)數(shù)據(jù)科學(xué)的過(guò)程中一直伴隨著我:
- 學(xué)一個(gè)新技能***的方法是找一個(gè)亟需解決的問(wèn)題。
- 你不必等到完全精通一個(gè)技能才開(kāi)始使用它。
依靠短短幾行的代碼和一本免費(fèi)的在線圖書(shū),我編寫(xiě)了一段真正可以應(yīng)用的程序。學(xué)習(xí)基礎(chǔ)知識(shí)有時(shí)是很無(wú)聊的,當(dāng)我***次嘗試學(xué)習(xí)Python時(shí),因?yàn)楦悴欢當(dāng)?shù)據(jù)結(jié)構(gòu)以及循環(huán)這類的概念,僅僅幾個(gè)小時(shí)就放棄了。而調(diào)整策略以后,我開(kāi)始為現(xiàn)實(shí)中的問(wèn)題尋找解決方案,并且在這過(guò)程中學(xué)習(xí)到了基礎(chǔ)知識(shí)。編程和數(shù)據(jù)科學(xué)有太多需要學(xué)習(xí)了,但是你不必一口吃成個(gè)大胖子,一次學(xué)完所有的知識(shí)。找到一個(gè)需要解決的問(wèn)題,然后開(kāi)始學(xué)習(xí)吧!
在這之后,我做了一些更復(fù)雜的項(xiàng)目,但我仍然記得這段有趣的Python編程初體驗(yàn)。
原文鏈接:
https://towardsdatascience.com/python-is-the-perfect-tool-for-any-problem-f2ba42889a85
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號(hào)“大數(shù)據(jù)文摘( id: BigDataDigest)”】