Python桌面文件清理腳本分享
需求
桌面臨時(shí)文件較多時(shí),直接刪了不太放心,不刪又顯得很雜亂,故需要寫(xiě)一個(gè)腳本批量清理并備份這些雞肋的文件。
所以腳本需要具有以下功能
1. 可以將桌面文件移動(dòng)至指定文件夾(可配置)。
2. 可以設(shè)置例外文件,比如桌面圖標(biāo)不需要移動(dòng),部分常用的文件也不需要移動(dòng)。
3. 出現(xiàn)同名文件時(shí),不能直接覆蓋,需要加一個(gè)日期后綴予以區(qū)分。例如更名為 helloworld-2022-08-30.txt
本來(lái)準(zhǔn)備按照文件后綴名分文件夾存放的,但畢竟是臨時(shí)文件,大概率還是需要定期刪除的,分類(lèi)后反而不利于檢索。
實(shí)現(xiàn)
目錄結(jié)構(gòu)
兩個(gè)配置文件,一個(gè)主類(lèi)。

代碼
ignore.ini配置需要忽略的文件名或者后綴名。
比如需要忽略圖標(biāo),可以加上.lnk;需要配置忽略文件夾temp,則在尾行加上temp即可;

location.ini配置需要備份至哪個(gè)目錄

main.py主類(lèi)
import os
import datetime
import shutil
def get_config(file_name):
"""
讀取配置文件
:param file_name: 文件名
:return: 按行讀取
"""
f = open(file_name)
lines = []
for line in f.readlines():
line = line.strip('\n')
lines.append(line)
return lines
def get_desktop():
"""
獲取桌面路徑
:return: 桌面絕對(duì)路徑
"""
return os.path.join(os.path.expanduser("~"), 'Desktop')
def get_suffix(dir_path):
"""
獲取文件的后綴名
:param dir_path: 文件名
:return: 后綴名
"""
return os.path.splitext(dir_path)[-1]
def get_exclude_suffix():
"""
獲取不參與整理的文件后綴名
"""
dirs = {}
lines = get_config('ignore.ini')
for line in lines:
dirs.setdefault(line, 0)
return dirs
def get_target_path():
"""
備份至指定文件夾
:return: 目標(biāo)位置的路徑
"""
return get_config('location.ini')[0]
def get_source_dirs():
"""
獲取需要轉(zhuǎn)移的文件
:return: 文件目錄
"""
dirs = os.listdir(get_desktop())
suffixes = get_exclude_suffix()
fit_dirs = []
for dir in dirs:
suffix = get_suffix(dir)
if suffix not in suffixes and dir not in suffixes:
fit_dirs.append(dir)
return fit_dirs
def get_time():
"""
獲取當(dāng)前年月日
:return: 時(shí)間
"""
return datetime.datetime.now().strftime('-%Y-%m-%d')
def get_rename(path):
"""
文件重命名
:param path: 路徑
:return: 命名后的路徑
"""
if os.path.isdir(path):
return path + get_time()
else:
return os.path.splitext(path)[0] + get_time() + get_suffix(path)
def move():
"""
移動(dòng)文件
"""
dirs = get_source_dirs()
target_base_path = get_target_path()
desk_url = get_desktop()
if not os.path.exists(target_base_path):
os.makedirs(target_base_path)
for dir in dirs:
path = os.path.join(desk_url, dir)
target_path = os.path.join(target_base_path, dir)
if os.path.exists(target_path):
# 如果有同名文件,則加一個(gè)日期后綴
target_path = get_rename(target_path)
shutil.move(path, target_path)
if __name__ == '__main__':
move()直接 python main.py 執(zhí)行腳本即可
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python查找算法之折半查找算法的實(shí)現(xiàn)
這篇文章主要介紹了Python查找算法之折半查找算法的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
命令行運(yùn)行Python腳本時(shí)傳入?yún)?shù)的三種方式詳解
這篇文章主要介紹了命令行運(yùn)行Python腳本時(shí)傳入?yún)?shù)的三種方式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
解決Numpy中sum函數(shù)求和結(jié)果維度的問(wèn)題
今天小編大家分享一篇解決Numpy中sum函數(shù)求和結(jié)果維度的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python 剪切移動(dòng)文件的實(shí)現(xiàn)代碼
移動(dòng)復(fù)制文件通過(guò)os.rename方法,先進(jìn)行文件是否存在判斷,如需更加復(fù)雜相同文件判斷可以根據(jù)文件屬性進(jìn)行判斷,此處只使用同名檢查,并刪除已存在文件,來(lái)實(shí)現(xiàn)覆蓋。這篇文章主要介紹了python 剪切移動(dòng)文件的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-08-08
Django debug為T(mén)rue時(shí),css加載失敗的解決方案
這篇文章主要介紹了Django debug為T(mén)rue時(shí),css加載失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
使用Python Fast API發(fā)布API服務(wù)的過(guò)程詳解
這篇文章主要介紹了使用Python Fast API發(fā)布API服務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
Python3 全自動(dòng)更新已安裝的模塊實(shí)現(xiàn)
這篇文章主要介紹了Python3 全自動(dòng)更新已安裝的模塊實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Python程序員面試題 你必須提前準(zhǔn)備!(答案及解析)
這篇文章主要為大家解析了你必須提前準(zhǔn)備的Python程序員面試題答案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01

