許多人花上數(shù)小時(shí)點(diǎn)擊鼠標(biāo)和敲打鍵盤,執(zhí)行重復(fù)的任務(wù),卻沒有意識(shí)到,如果他們給機(jī)器正確的指令,機(jī)器就能在幾秒鐘內(nèi)完成他們的工作。
作為一種解釋型、具有豐富的高級(jí)語(yǔ)言特性、跨平臺(tái)又簡(jiǎn)單易用的編程語(yǔ)言,能幫我們做的,遠(yuǎn)不止是在工作中完成正式項(xiàng)目的任務(wù),更能幫我們解決日常生活中一些瑣碎的“小事”——讓繁瑣工作自動(dòng)化,不但大大節(jié)省精力和時(shí)間,還能呈數(shù)量級(jí)地提高工作效率,談笑間,讓瑣事“灰飛煙滅”。
自動(dòng)化的雙層含義
提起自動(dòng)化,往往包含兩層含義,其中一層,是通過編寫代碼,自動(dòng)完成解決問題需要的整個(gè)或部分流程,把多個(gè)步驟“封裝”或“固化”成一段代碼,一次運(yùn)行,節(jié)省多道手工手續(xù),省力;另外一層,則是通過定期或不定期代碼的重復(fù)執(zhí)行,節(jié)省不必要的重復(fù)、瑣碎、或常規(guī)化操作,所謂“一次編寫,處處運(yùn)行”,省心。
兩個(gè)層面結(jié)合,就能事半功倍、省心省力、準(zhǔn)確高效地解決各種日常任務(wù)。而這,也恰恰是編程思維非常重要的一個(gè)方面。
我們?nèi)粘9ぷ髦忻鎸?duì)的很多事兒,。就拿我們?nèi)粘N募到y(tǒng)維護(hù)這件小事來說,手動(dòng)批量重命名文件、定期備份、文件自動(dòng)分組這些小事,手動(dòng)完成太繁瑣,自己花點(diǎn)時(shí)間寫個(gè)小程序,輕松就能搞定,不僅省時(shí)省力,還有背后那份喜悅和成就感,是難以言表的。
有人提問:用 進(jìn)行辦公自動(dòng)化都需要學(xué)習(xí)什么知識(shí)呢?這可能是很多非 IT 職場(chǎng)人士面臨的困惑,想把 用到工作中,卻不知如何下手? 在自動(dòng)化辦公領(lǐng)域越來越受歡迎,批量處理簡(jiǎn)直是加班族的福音。
自動(dòng)化辦公無非是 excel、ppt、word、郵件、文件處理、數(shù)據(jù)分析處理、爬蟲這些,接下來,我們通過具體例子,看看是如何幫文件系統(tǒng)“瘦身”的。
一、瘦身計(jì)劃——自動(dòng)刪除久未訪問的文件
你是不是也有這樣一個(gè)叫“”或“temp”的文件夾,里面多是從網(wǎng)上下載的各類文件,還有別人發(fā)給你的文檔,時(shí)間一長(zhǎng),里面的文件就是一堆,看著心煩。其中有些文件可能挺重要,隔三差五能用到,而有些可能永遠(yuǎn)都不會(huì)再用到,而且用不到的往往是大多數(shù)。最簡(jiǎn)單的“瘦身”方案,就是刪除那些沒必要保留的文件,怎么判斷呢?在文件系統(tǒng)里,每個(gè)文件都會(huì)保存最后訪問時(shí)間的信息,記錄著你最后一次用到這個(gè)文件的具體時(shí)間,根據(jù)這個(gè)時(shí)間,我們很容易判斷一個(gè)文件是不是已經(jīng)被“打入冷宮”、可以放心清除了。這事兒手動(dòng)完成很容易,但文件一多,你肯定會(huì)覺得無聊,尤其是文件成百上千的時(shí)候,絕對(duì)讓人抓狂。這時(shí)候,就可以用代碼實(shí)現(xiàn)自動(dòng)化來幫忙了。 在處理批量操作有得天獨(dú)厚的優(yōu)勢(shì),成千上萬的文件修改可能只需幾秒的時(shí)間。
把問題分解一下,要做的基本上就是三件事:遍歷文件夾下所有文件、篩選出最后訪問日期早于某個(gè)時(shí)間點(diǎn)的文件、刪除篩出的老文件。先在命令行打開交互界面:
文件遍歷、最近訪問日期的獲取和文件刪除操作,都要用到的“os”模塊,獲取當(dāng)前時(shí)間要用到“time”模塊。所以先加載“time”和“os”這兩個(gè)模塊:
用time.time()獲取現(xiàn)在時(shí)間,計(jì)算可以接受的最老的文件被訪問時(shí)間,這里定為30天之前:
接下來,確定要清理的目錄,通過os.()獲取該目錄下所有文件、子目錄的列表,保存到files:
無論何時(shí)運(yùn)行以上代碼,都會(huì)方便地檢查目錄、刪除過期文件。
注意:用os.()刪除的文件,不會(huì)進(jìn)入回收站,因此務(wù)必小心,調(diào)試時(shí)可先把os.()注釋掉,并及時(shí)備份,防止意外刪除造成損失。
二、一目了然—將文件按類型組織到對(duì)應(yīng)子目錄下
老文件清除了,要是文件依然很多,該怎么辦呢?一種簡(jiǎn)單的策略,就是“分而治之”,具體的功能很簡(jiǎn)單,給定一個(gè)打算整理的文件夾目錄,這個(gè)腳本可以將該目錄下的所有文件都揪出來,并且根據(jù)后綴名歸類到不同的文件夾里,這簡(jiǎn)直是整理愛好者的福音。把不同類型的文件移到專門的文件夾里,比如把擴(kuò)展名為“.mp4”和“.mkv”的文件移動(dòng)到“movie”子目錄,把擴(kuò)展名為“.png”、“.jpg”的文件移動(dòng)到“image”子目錄簡(jiǎn)單文件系統(tǒng)的實(shí)現(xiàn),等等,以后再找文件就能快速定位了,目錄看起來也清爽許多。
首先,還是把問題分解一下,要做的也是三件事:遍歷文件夾下所有文件、根據(jù)文件擴(kuò)展名判斷文件類型、根據(jù)文件類型將文件移動(dòng)到對(duì)應(yīng)子目錄(子目錄不存在則需要?jiǎng)?chuàng)建子目錄)。先在命令行打開交互界面:
文件遍歷和路徑操作仍要用到“os”模塊,文件移動(dòng)操作要用到“”模塊,先加載這兩個(gè)模塊:
設(shè)定要清理的目錄,通過os.()獲取該目錄下所有項(xiàng)目,保存到files:
運(yùn)行完成,會(huì)看到各類文件已經(jīng)被移動(dòng)到對(duì)應(yīng)子目錄下。這里如果不對(duì)子目錄是否存在進(jìn)行判斷就貿(mào)然移動(dòng)文件,可能會(huì)觸發(fā)目錄不存在的異常。
三、解放雙手——程序的自動(dòng)調(diào)度
通過以上兩段代碼,我們已經(jīng)實(shí)現(xiàn)了自動(dòng)化的系統(tǒng)簡(jiǎn)單清理,雖然每次運(yùn)行沒問題,但還是需要我們手動(dòng)執(zhí)行——能不能一勞永逸,徹底不用管它實(shí)現(xiàn)完全自動(dòng)化呢?答案是肯定的。最簡(jiǎn)單的方案,就是用安排腳本在特定時(shí)間周期性執(zhí)行。是老牌的定時(shí)任務(wù)管理工具,會(huì)按照設(shè)定的周期、指定的時(shí)間執(zhí)行特定應(yīng)用。為了使用簡(jiǎn)單文件系統(tǒng)的實(shí)現(xiàn),首先需要將之前的代碼整合成一個(gè)腳本文件,取名為.py:
在終端中鍵入以下命令,在編輯模式打開:
在文件底部鍵入這行內(nèi)容:
這行內(nèi)容設(shè)定了要求如何自動(dòng)執(zhí)行我們的腳本。其中第一項(xiàng)是幾分,范圍是0-59;第二項(xiàng)是幾點(diǎn),范圍是0-23;第三項(xiàng)是幾號(hào),范圍是1-31;第四項(xiàng)是幾月,范圍是1-12;第五項(xiàng)是星期幾,范圍是0-6,0表示星期天。這里的“*”是通配符,表示任意值都可以。所以,這一行最前面的“0 0 * * 0”表示我們希望在每周日00:00調(diào)度運(yùn)行名為.py的腳本,怎么樣,很簡(jiǎn)單吧?
自動(dòng)化可以幫我們節(jié)省大量精力和時(shí)間、提高工作效率,讓生活變得更加輕松,這里,我們只是舉了一個(gè)非常簡(jiǎn)單的文件自動(dòng)清理的例子,你完全可以用相同的思路和知識(shí)來自動(dòng)化其他瑣碎的日常任務(wù)。具體做什么不重要,重要的是通過腳本讓繁瑣工作自動(dòng)化的思路,希望能對(duì)你有所幫助,人生苦短,我用!
程序員深度學(xué)習(xí)的“四大名著”:
這四本書著實(shí)很不錯(cuò)!我們都知道現(xiàn)在機(jī)器學(xué)習(xí)、深度學(xué)習(xí)的資料太多了,面對(duì)海量資源,往往陷入到“無從下手”的困惑出境。而且并非所有的書籍都是優(yōu)質(zhì)資源,浪費(fèi)大量的時(shí)間是得不償失的。給大家推薦這幾本好書并做簡(jiǎn)單介紹。
獲得方式: