
人人可以編程
計算機發(fā)展至今,已經(jīng)實現(xiàn)了普及化。相應的,驅(qū)動計算機的程序已經(jīng)遍布了世界的每一個角落。過去,編寫程序是件高門檻的事,整件事情對于普通人來說就像外星人一樣陌生。
但是現(xiàn)在,相信我,人人可以編程,甚至它應該作為你使用計算機的一種必備能力。整個網(wǎng)絡(luò)世界里各種教程,編程語言也越來越人性化(有時候看一段程序,你甚至都會有一種看文章的感覺),豐富的庫和封裝讓你對于一些復雜的東西可以拿來就用,而不必知道為什么。這些對于一個普通的計算機用戶而言就夠了。當你想要簡化生活、提高效率時,你可以隨時開始動手!
是的,你只需要花上幾個小時,也許可能是2、3天,稍微學習一門編程語言的基礎(chǔ)語法,你就可以利用互聯(lián)網(wǎng)的資源開始編寫簡化你生活的小工具了。對大多數(shù)人的個人小工具而言,也許你可以考慮把它做的美觀一點,但我覺得關(guān)于代碼的效率、優(yōu)雅你不應該去考慮。對你而言,只要邏輯梳理通順,程序跑起來,功能基本可以使用就夠了。這就是為什么我說,花上一點時間學習一點基礎(chǔ)語法就行的原因。
嘿,這絕對是一件低投入,高回報的投資!
用編程簡化生活
CoorChice作為一只靠編程吃飯的帥猿,自然要好好利用編程能力去簡化生活、提高效率。一些繁雜的事情,它們可是體力活!我只需要寫一個簡單小程序去幫我完成就行。一勞永逸就是這么爽!
比如我現(xiàn)在要舉例的Deleter。
Deleter,為批量處理而生
我之所以需要一個Deleter,是因為CoorChice發(fā)現(xiàn),我總是不可避免的經(jīng)常要對大量的文件名做些什么。刪除文件名的一部分、替換文件名的一部分、為文件名添加新的成分等等簡單,但是繁瑣而消耗時間的事情。因此,CoorChice編寫了Deleter來幫助我完成這些事情。原本我可能需要花上幾個小時,甚至一天去做的體力活,現(xiàn)在只需要幾秒鐘!這就是我所說的簡化生活。
下面,CoorChice將向你展示Deleter是如何幫助我簡化生活,提高效率的,并會附上它的實現(xiàn)代碼。
對于一些小工具,CoorChice會選擇使用Python來編寫。因為它像白話文一樣簡潔,并且有相當多的開源庫可供使用。對于大多數(shù)而言,選擇Python來作為簡化生活的編程語言,看起來是很明智的。盡管不用去糾結(jié)那幾毫秒的效率,忽略它吧。這就是我學習Python想要做的事。
使用Deleter
你可以直接下載這個Python程序:
或者復制文末的代碼,然后保存為.py文件。
運行它你只需要打開命令行,進入到Python程序所在的目錄,然后輸入:
python Deleter.py
接著,一個Python程序就被運行起來了。但是,有一個前提是你必須安裝過Python環(huán)境。
怎么安裝來著?或許你該試著在網(wǎng)上找找所需要的信息??梢钥纯碈oorChice的這篇文章,關(guān)于如何進行互聯(lián)網(wǎng)搜索的:【這十個搜索技巧至少價值100萬?。篽ttp://www.itdecent.cn/p/a2f0f5a39cc3】。
一切順利的話,你將能看到如下界面:

批量替換文件名內(nèi)容

上圖是一個序列幀圖的文件集合,它包含了很多很多張圖片?,F(xiàn)在我想要給它們重新命名。如果沒有Deleter這個程序,想想看,這么多,我得一個個改。它將會花費我將近一個小時的時間!我經(jīng)常面對著比這多的多的文件需要修改,如果沒有Deleter,天知道有多少時間將花費多少時間在這些無意義的事情上。即使用上腳趾頭和手指頭一起去計算,也不能算的出來!
現(xiàn)在,在Deleter中的【路徑】輸入框輸入這些文件所在的目錄完整地址;接著在【需要刪除的內(nèi)容】輸入框輸入:mike,即想要刪除的的內(nèi)容;然后在【替換的新內(nèi)容】輸入框輸入:newname,即想要替換的新內(nèi)容。就像這樣:

最后點擊【Sure】。1s后:

嗯,成功替換了所有文件名。這次CoorChice省下了59分55秒的時間。
批量刪除文件名的指定部分
基本操作和上面一樣,你只需要把【替換的新內(nèi)容】輸入框空出來就行了。

點擊【Sure】。

需要注意,如果文件名中包含多個與需要刪除內(nèi)容相同的字段,那么Deleter將會從后往前刪除,并且每次只能刪除一個地方的。
在文件名首端批量添加字段
這次需要把【需要刪除的內(nèi)容】輸入框空出來,像這樣:

點擊【Sure】。

注意,新增的內(nèi)容是從首端插入哦。
實現(xiàn)代碼
那么實現(xiàn)上面這些功能的程序的代碼長什么樣呢?
# coding=utf-8
from Tkinter import *
import os
def sure():
global path
path = path_entry.get()
global suffix
suffix = suffix_entry.get()
global new_content
new_content = new_content_entry.get()
change_name()
def change_name():
os.chdir(path)
for file in os.listdir(path):
if file.rfind(suffix) != -1:
print 'before: ' + file
old_name = file
start_index = 0
end_index = 0
if len(suffix) > 0:
start_index = file.rindex(suffix)
end_index = start_index + len(suffix)
if end_index != start_index:
file_length = len(file)
end_content = file[end_index:file_length]
start_content = file[0:start_index]
new_name = start_content + new_content + end_content
else:
new_name = new_content + file
print '-----> after: ' + new_name
os.rename(old_name, new_name)
# UI
root_view = Tk()
root_view.title('Deleter')
root_view.geometry("300x120") # 是字母x,不是*!
path_label = Label(root_view, text='路徑')
path_label.grid(row=0)
path_entry = Entry(root_view)
path_entry.grid(row=0, column=1)
suffix_label = Label(root_view, text='需要刪除的內(nèi)容')
suffix_label.grid(row=1)
suffix_entry = Entry(root_view)
suffix_entry.grid(row=1, column=1)
new_content_label = Label(root_view, text='替換的新內(nèi)容')
new_content_label.grid(row=2)
new_content_entry = Entry(root_view)
new_content_entry.grid(row=2, column=1)
btn_sure = Button(root_view, text='Sure', command=sure)
btn_sure.grid(row=3, column=1)
root_view.mainloop()
大家可以看到,非常短的一段代碼。但是它所實現(xiàn)的功能,一直以來幫助CoorChice節(jié)省了大量的時間,而我編寫它只需要花上幾分鐘。當然,這段代碼任然可以優(yōu)化,但是我想我不會花時間去優(yōu)化它。因為對于我而言,它已經(jīng)解決了我的問題,并且所花費的時間我甚至可以忽略掉。所以,我不會花費時間去把代碼優(yōu)化的優(yōu)雅,或者讓它的執(zhí)行效率能快上那么幾毫秒。我想你知道我要說什么。
開始編程吧
CoorChice之所以分享自己的簡陋的小工具,其實是想說明,在這個時代,你只需要掌握簡單的編程知識,你就能夠通過編程來簡化你的生活。有用的程序不一定需要多晦澀難懂的知識,或者像混亂的線球一樣復雜的邏輯才能實現(xiàn)。你只需要一點點編程語言基礎(chǔ),加上一點點小邏輯,一道程序就能新鮮出爐了。而且一次編寫,反復使用!
對于我們大多數(shù)人而言,這就夠了。