文件整理脚本说明与使用指南
概述
此脚本旨在根据文件类型自动整理指定目录中的文件,将它们移动到对应的文件夹中。它可以帮助用户快速分类和整理文档、图片、音乐、视频、压缩文件、网页文件和源代码文件。
个人博客
个人博客直达地址
网站不断完善中里面拥有大量的脚本,并且源码完全开放 欢迎纯白嫖。关注公众私信可免费写脚本
功能说明
1. 路径定义
脚本通过 argparse
模块获取用户指定的目录路径,并将其作为文件整理的目标目录。如果用户未指定路径,脚本将使用当前目录(./
)作为默认路径。
2. 文件类型分类
脚本预先定义了几类文件类型,分别对应不同的扩展名,如文档文件(.log
, .txt
, .doc
, .pdf
等)、图片文件(.png
, .jpg
, .jpeg
等)、音乐文件(.mp3
, .wav
等)、压缩文件(.zip
, .rar
等)、视频文件(.mp4
, .mkv
等)、网页文件(.html
, .css
, .js
等)以及源代码文件(.py
, .c
, .cpp
等)。
3. 目标目录创建
脚本根据文件类型在目标目录中创建相应的子目录,如 Documents
、Pictures
、Music
、Video
等,用于存放对应类型的文件。如果这些目录已存在,脚本将跳过创建步骤。
4. 文件整理
脚本遍历目标目录中的所有文件,根据文件的扩展名将其移动到对应的子目录中。如果文件属于预定义的某一类,脚本会将其移动到对应的子目录中,例如音乐文件将移动到 Music
目录。
5. 清理空目录
在文件整理完成后,脚本将检查是否有空目录存在,并删除这些空目录,以保持目标目录的整洁。
6. 用户确认
在执行整理操作前,脚本会提示用户确认操作,用户可以选择继续执行或退出脚本。
使用说明
-
运行脚本:
- 打开终端或命令行工具,输入
python script_name.py <directory_path>
,其中<directory_path>
是你希望整理的目录路径。 - 如果不指定路径,脚本将默认整理当前目录。
- 打开终端或命令行工具,输入
-
确认操作:
- 脚本将提示你是否继续操作,输入
y
继续执行整理,输入n
退出脚本。
- 脚本将提示你是否继续操作,输入
-
查看结果:
- 脚本执行完成后,目标目录中的文件将根据其类型移动到对应的子目录中。
注意事项
- 路径输入:请确保输入的目录路径是正确且存在的,否则脚本无法正常执行。
- 文件移动:脚本会将文件移动到相应的目录中,而不是复制。因此,整理过程中请确保文件未被占用或锁定。
- 空目录清理:脚本会删除整理后未使用的空目录,如果有重要的空目录,请提前备份或注意保留。
- 文件冲突:如果目录中存在同名文件,可能会覆盖已存在的文件,请在执行脚本前检查文件是否存在冲突。
import argparse
import os
# 定义路径
def path():
parse = argparse.ArgumentParser(
add_help=True, description="根据文件类型将文件整理到不同的目录")
parse.add_argument('directory_path', type=str, default='./',
help="目录的绝对路径")
return parse.parse_args().directory_path
# 文件类型分类
documents = ['.log', '.txt', '.doc', '.docx', '.md', '.pdf', '.wps']
picture = ['.png', '.jpg', 'jpeg', '.bmp']
music = ['.mp3', '.wav']
compressed = ['.zip', '.rar', '.tar', '.gz', '.bz2', '.xz']
video = ['.3gp', '.mov', '.mp4', '.mkv', '.srt', '.avi']
web = ['.html', '.css', '.js']
source = ['.py', '.c', '.cpp', '.java']
# 目标目录
directories = [path() + '/Compressed', path() + '/Documents',
path() + '/Pictures', path() + '/Music', path() + '/Video', path() + '/Web', path() + '/Source-codes',]
# 确认
print("脚本将开始按文件类型进行整理")
print("您确定要继续吗?(y/n)")
flag = input('>>>')
if flag.lower() == 'y':
try:
# 创建目标目录
for d in directories:
os.mkdir(d)
except FileExistsError:
pass
# 整理文件
for files in os.listdir(path()):
dot = (files.rfind('.'))
if dot != 0 and dot != -1:
if files[dot:].lower() in music:
os.rename(path() + '/' + files, path() + '/Music/' + files)
if files[dot:].lower() in picture:
os.rename(path() + '/' + files, path() + '/Pictures/' + files)
if files[dot:].lower() in documents:
os.rename(path() + '/' + files, path() + '/Documents/' + files)
if files[dot:].lower() in compressed:
os.rename(path() + '/' + files, path() +
'/Compressed/' + files)
if files[dot:].lower() in video:
os.rename(path() + '/' + files, path() + '/Video/' + files)
if files[dot:].lower() in web:
os.rename(path() + '/' + files, path() + '/Web/' + files)
if files[dot:].lower() in source:
os.rename(path() + '/' + files, path() + '/Source-codes/' + files)
# 清理空目录
for d in directories:
if not os.listdir(d): # 使用 not os.listdir(d) 检查目录是否为空
os.rmdir(d) # 删除空目录
else:
print("退出")
os.sys.exit(0)