需求
桌面清理脚本,将桌面文件移动到指定文件,按天分类。
实现
目录结构
两个配置文件,一个主类。
代码
ignore.ini配置需要忽略的文件名或者后缀名。
比如需要忽略图标,可以加上.lnk;需要配置忽略文件夹temp,则在尾行加上temp即可;
location.ini配置需要备份至哪个目录
main.py主类
import os
import datetime
import random
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 move():
"""
移动文件
"""
dirs = get_source_dirs()
target_base_path = get_target_path()
desk_url = get_desktop()
target_path = os.path.join(target_base_path, datetime.datetime.now().strftime('%Y%m%d'))
if not os.path.exists(target_path):
os.makedirs(target_path)
else:
target_path = os.path.join(target_path, datetime.datetime.now().strftime('%H%M%S'))
os.makedirs(target_path)
for dir in dirs:
try:
path = os.path.join(desk_url, dir)
temp_file = os.path.join(target_path, dir)
shutil.move(path, temp_file)
except Exception :
continue
if __name__ == '__main__':
move()
直接 python main.py 执行脚本即可