每天因?yàn)橐猟ebug的原因善榛,需要下載很多l(xiāng)og辩蛋,久而久之,log越來(lái)越多移盆,不僅占用空間悼院,而且也很難查找新下載的log,下午難得空閑咒循,用python寫個(gè)小程序刪除這些垃圾文件.
1. 思路
基本上下載的log都會(huì)固定放在那幾個(gè)folder中据途,下載的log文件名字也基本雷同绞愚,所以只需要search這幾個(gè)folder下的文件,然后名字有keyword的就直接刪除即可.
另外颖医,因?yàn)橹罂隙ú粫?huì)記得位衩,所以還需要可以在每次開機(jī)的時(shí)候自動(dòng)來(lái)run,做到悄無(wú)聲息哈.
2. 編碼
思路有了熔萧,下來(lái)開始編碼.
首先怎么才能獲取目錄和目錄下的文件呢糖驴?Google一番后,發(fā)現(xiàn)還是比較簡(jiǎn)單佛致,上代碼,
files_list = os.listdir("C:\Users\mtk54273\Desktop\log")
os.chdir(folder)
這樣files_list就獲取到了log folder下的所有folder和files贮缕,這里os.chdir(folder)的目的是為了之后的操作,原因是files_list獲取并不是絕對(duì)路徑晌杰,因此需要切到對(duì)應(yīng)的路徑下跷睦,好比
cd C:\Users\mtk54273\Desktop\log
下來(lái)就是如何判斷files_list中的文件是否是log文件,這個(gè)最初的想法是配置一個(gè)config文件肋演,然后讀取抑诸,不過(guò)發(fā)現(xiàn)意義不大,直接寫到代碼還來(lái)得快,也許之后可以再來(lái)擴(kuò)充.
def is_log_file(file_name):
if "aee" in file_name:
return True
if "mobile" in file_name:
return True
if "Screenshot" in file_name:
return True
if "db" in file_name:
return True
return False
這里可以添加任意的關(guān)鍵字,作為想要?jiǎng)h除的對(duì)象锅铅,這種做法其實(shí)不推薦了,不過(guò)對(duì)于這種輕量級(jí)的程序层玲,也不一定要做的那么高大上哈.
再加下來(lái)就是具體的刪除了,這個(gè)用python還是很簡(jiǎn)單的反症,唯一需要注意是要區(qū)分是否是目錄辛块,因?yàn)閯h除目錄需要用到不同的方法.
def delete_file(file_name):
if (os.path.isdir(file_name)):
# 刪除目錄需要用shutil來(lái)做
shutil.rmtree(file_name)
else:
os.remove(file_name)
最后,就是怎么能夠在開機(jī)的時(shí)候啟動(dòng)了铅碍,Google一番润绵,最簡(jiǎn)單的方式就是利用windows自帶的啟動(dòng)功能
首先創(chuàng)建一個(gè)快捷方式,然后把快捷方式直接放到啟動(dòng)文件夾下即可胞谈,找不到的可以在開始->所有程序->啟動(dòng)中找到.
至此大功告成尘盼,跑了一下,第一遍有些慢烦绳,因?yàn)槔鴏og文件有多有大卿捎,不過(guò)之后應(yīng)該會(huì)好很多哈!
3. 提高
這里其實(shí)有幾個(gè)地方還有待提高径密,待日后有時(shí)間再來(lái)完善:
- 目標(biāo)文件夾可以定義在config文件午阵,這樣不需要每次改代碼
- 電腦關(guān)機(jī)很少,這樣開機(jī)自啟動(dòng)似乎意義就不大享扔,最好有個(gè)定時(shí)器趟庄,不重啟也能定時(shí)啟動(dòng)
- 刪除的log文件有些可能還需要括细,所以刪除的時(shí)候可以有個(gè)判斷伪很,比如是一周沒在使用的再刪除
最后貼上完整代碼戚啥,供參考:
import os
import shutil
def delete_log_files():
folders = ["C:\Users\mtk54273\Desktop\log",
"D:\DeskTop\Temp Download\Temp Logs"
]
for folder in folders:
delte_log_from_folder(folder)
def delte_log_from_folder(folder):
files_list = os.listdir(folder)
os.chdir(folder)
for file_name in files_list :
if(is_log_file(file_name) == True):
delete_file(file_name)
def is_log_file(file_name):
if "aee" in file_name:
return True
if "mobile" in file_name:
return True
if "Screenshot" in file_name:
return True
return False
def delete_file(file_name):
if (os.path.isdir(file_name)):
shutil.rmtree(file_name)
else:
os.remove(file_name)
delete_log_files()