Python桌面文件清理脚本分享
作者:小楼夜听雨QAQ 发布时间:2022-10-11 03:13:23
标签:Python,桌面文件,清理
需求
桌面临时文件较多时,直接删了不太放心,不删又显得很杂乱,故需要写一个脚本批量清理并备份这些鸡肋的文件。
所以脚本需要具有以下功能
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


猜你喜欢
- 使用Django的时候,我发现一个很神奇的装饰器: @login_required, 这是控制一个view的权限的,比如一个视图必须登录才可
- Javascript 正常取来源网页的URL只要用: document.referrer就可以了!但,如果来源页是Jav
- 本文实例讲述了Python实现截屏的函数。分享给大家供大家参考。具体如下:1.可指定保存目录.2.截屏图片名字以时间为文件名3.截屏图片存为
- 前言哈喽铁汁们~新年到了,很多小伙伴都会买上一本日历。现在各种主题各种式样的日历有很多,不过你有没有想过自己定制一套专属的个性化电子日历呢?
- 在前面的文章 Python 计算机视觉(十五)—— 图像特效处理 中我已经介绍了大部分的图像的特效处理,但还是忽略了油画特效的处理,在本篇文
- 1.DNS查询过程:以查询 www.baidu.com为例(1)电脑向本地域名服务器发送解析www.baidu.com的请求(2)本地域名服
- 题目描述997. 找到小镇的法官 - 力扣(LeetCode)小镇里有 n 个人,按从 1 到 n 的顺序编号。传言称,这些人中有一个暗地里
- abs()返回一个数字的绝对值,它的参数可以是整数或者浮点数。举个例子:all()参数为一个可迭代对象,如果该可迭代对象所有元素的真值都为T
- 代码如下:'其中注释中有 ###的需要用户设置 '其中注释中有 参数传递 ** 的 说明要通过参数 传递。'定义变量
- 笔者认为,在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做
- 关于SQL Server 2014中的基数估计,官方文档Optimizing Your Query Plans with the SQL S
- <?php echo CHtml::link('错误链接','user/register')?>
- Python 3 的可迭代解包在 PEP 3132 - Extended Iterable Unpacking 里面描述了一种对可迭代对象的
- 【问题描述】我们生产环境有一组集群的多台MySQL服务器(MySQL 5.6.21),不定期的会crash,但error log中只记录了重
- 5位数日期戳读取 .mat 文件处理里面数据时,发现里面的日期数据全部都是 “5位数” 数字,很不解;后来查到可以在excel中通过设置单元
- 用python另一个抢票神器,你get到了吗?2017年时间飞逝,转眼间距离2018年春节还有不到1个月的时间,还在为抢不到火车票发愁吗?作
- 本文实例讲述了python处理csv数据的方法。分享给大家供大家参考。具体如下:Python代码:#coding=utf-8__author
- 一.需求统计收集各个实例上table的信息,主要是表的记录数及大小。收集的范围是cmdb中所有的数据库实例。二.公共基础文件说明1.配置文件
- 前言最近学习了python,感觉挺多地方能用到它的。打包 测试 上传 爬电影....而且代码量是真少。人生苦短,我用python。而今天写的
- 方法一(不使用模块,by agonyr)#!/usr/bin/perl -wuse strict;my @seq = ( "A&q