網站首頁 編程語言 正文
需求
桌面臨時文件較多時,直接刪了不太放心,不刪又顯得很雜亂,故需要寫一個腳本批量清理并備份這些雞肋的文件。
所以腳本需要具有以下功能
1. 可以將桌面文件移動至指定文件夾(可配置)。
2. 可以設置例外文件,比如桌面圖標不需要移動,部分常用的文件也不需要移動。
3. 出現同名文件時,不能直接覆蓋,需要加一個日期后綴予以區分。例如更名為 helloworld-2022-08-30.txt
本來準備按照文件后綴名分文件夾存放的,但畢竟是臨時文件,大概率還是需要定期刪除的,分類后反而不利于檢索。
實現
目錄結構
兩個配置文件,一個主類。
代碼
ignore.ini配置需要忽略的文件名或者后綴名。
比如需要忽略圖標,可以加上.lnk;需要配置忽略文件夾temp,則在尾行加上temp即可;
location.ini配置需要備份至哪個目錄
main.py主類
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: 桌面絕對路徑
"""
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: 目標位置的路徑
"""
return get_config('location.ini')[0]
def get_source_dirs():
"""
獲取需要轉移的文件
: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():
"""
獲取當前年月日
:return: 時間
"""
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():
"""
移動文件
"""
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):
# 如果有同名文件,則加一個日期后綴
target_path = get_rename(target_path)
shutil.move(path, target_path)
if __name__ == '__main__':
move()
直接??python main.py 執行腳本即可
原文鏈接:https://blog.csdn.net/qq_37855749/article/details/126596680
相關推薦
- 2023-09-12 Nginx安裝與常見命令
- 2022-08-15 數據結構之有頭鏈表的實現
- 2023-02-27 一文搞懂Golang?值傳遞還是引用傳遞_Golang
- 2022-11-21 Python?Flask實現圖片驗證碼與郵箱驗證碼流程詳細講解_python
- 2022-09-01 jquery實現全選功能_jquery
- 2022-07-19 C++分別使用std::chrono和clock()計算時間間隔
- 2023-01-11 ubuntu如何搭建vsftpd服務器_FTP服務器
- 2022-10-27 LyScript實現指令查詢功能的示例代碼_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支