現(xiàn)在人們經(jīng)常要去下載或者接收一些文件。
比如說同事傳來的文檔,自己建立的文件,想看的電影等等,那大家都會怎么處理這些文件呢?
科研工作者、學(xué)生們可能需要閱讀大量的文獻(xiàn),我們也需要閱讀很多的電子書等等,這些文件你又是如何處理的呢?
是一一歸類好,還是堆在一個文件夾里就算了?
以前我會按照文件的類型進(jìn)行分類,并定期處理,但這個過程會耗費(fèi)我大量的時間。
·圖片類型文件:有png格式的,有jpg格式的,有g(shù)if格式的。
·文檔文件:有pdf格式的,有知網(wǎng)上面caj格式的,還有有word文檔,分別是doc格式的和docx格式。
后來我在學(xué)python的過程中,就想到了這個小需求,能不能用python批量操作呢?這樣會減少我們的整理時間,能夠讓工作和學(xué)習(xí)效率更高。
經(jīng)歷了一番和python的斗爭之后,我終于寫出來了這樣的一個小代碼。
既然要?dú)w類,首先要建立對應(yīng)的文件夾,這里面選擇使用python原生的os庫進(jìn)行操作,要進(jìn)行一系列的系統(tǒng)操作,選擇使用shutil庫。
import os
import shutil
我打算將我A文件夾下面的各個文件夾里面文件區(qū)分開,那首先要讓程序確定你的東西是在哪里。
要先寫一個path,我是給這些文件夾放在了F盤a,那我設(shè)置的path就是它,如果是別的目錄,就寫對應(yīng)的路徑就好了。
path = “F:/A”
文檔的路徑圖例子如下:
此處劃重點(diǎn):我們在程序中輸入的路徑和電腦系統(tǒng)中直接復(fù)制出來的路徑不同,如果直接用從電腦系統(tǒng)中復(fù)制出來的,會報錯。
有三種方法可以解決這個問題。
01:上面介紹的方法,將\換成/即可;
02:將\換成\\即可,因?yàn)閈在python中是有特殊含義的,就是轉(zhuǎn)義符號, 那這個實(shí)際上這個\\就是代表將轉(zhuǎn)義符號轉(zhuǎn)義成正常的\;
03:在這一串字符串前面加r,變成r“F:\A”,這樣的話,也可以正常使用。
這三種方法,逗汁兒更喜歡第一種~喜歡哪種方法就用哪種吧,但是在各種系統(tǒng)中第一種寫法都支持哦,強(qiáng)烈推薦第一種。
接下來就要在建立兩個文件夾,分別存儲圖片和文檔文件:
os.makedirs(path + ‘/tupian’)
os.makedirs(path + ‘/wendang’)
裝文件的文件夾建好了,那我們就進(jìn)行下一步,在移動文件之前需要確定要移動的文件有哪些,這個要根據(jù)什么判斷呢?
我們知道確定文件是什么類型的就是后綴名啦,那我們就讓程序知道什么后綴的屬于圖片文件,什么后綴的屬于文檔文件就好了。
img_list = [‘png’,’jpg’,’gif’]
wendang_list = [‘doc’,’docx’,’caj’,’pdf’]
·建立好了兩個列表之后,就要進(jìn)行循環(huán)來移動文件。
for p in wendang_list:
·首先要先要確定文檔所在文件夾,建立路徑
wendang_path= path + '/' + p
·用os.listdir()來確定這個文件夾里面有什么東西(哪些是pdf,哪些是word文件)
wendang_files= os.listdir(wendang_path)
·利用循環(huán)來進(jìn)行文件移動
for i in wendang_files: #真正的移動文件夾中的文件
·shuil.move的兩個參數(shù)分別表示,原來文件所在地以及要移動的位置
shutil.move(pdf_path + '/' + i, path + '/wendang')
·刪除原文件夾
os.removedirs(wendang_path)
這一部分就講文檔類的文件都移動進(jìn)來了,那下一步就是將圖片類的文件移動進(jìn)來。
for i in img_list:
img_path = path + ‘/’ + i
img_files= os.listdir(img_path)
for m in img:
shutil.move(img_path+’/’ + m, path + ‘/tupian’)
os.removedirs(img_path)
執(zhí)行完以上代碼后文件夾如下圖所示:
(吐槽一下,這個xmind調(diào)了半天也沒調(diào)出來在正中間,讓我這個強(qiáng)迫癥很難受)
剛才在講解的過程中代碼相對比較亂,現(xiàn)在給一份完整版。
import os
import shutil
#建立路徑
path = “F:/A”
os.makedirs(path + ‘/tupian’)
os.makedirs(path + ‘/wendang’)
#建立后綴列表
img_list = [‘png’,’jpg’,’gif’]
wendang_list = [‘doc’,’docx’,’caj’,’pdf’]
#移動文檔文件
for p in wendang_list:
wendang_path = path + '/' + p
wendang_files = os.listdir(wendang_path)
for i in wendang_files:
shutil.move(pdf_path + '/' + i, path +'/wendang')
os.removedirs(wendang_path)
#移動圖片文件
for i in img_list:
img_path = path + ‘/’ + i
img_files= os.listdir(img_path)
for m in img:
shutil.move(img_path+’/’ + m, path + ‘/tupian’)
os.removedirs(img_path)