一. “一两” 的烦恼
又来新同事,不知其名,但遇到问题他口头禅:“这不叫事,一两酒的事!”所以,大家喜欢叫他“一两“;
这不叫事的“一两“,也遇到了事;其实,这事说大不大,可是闹得‘一两’要离开公司。
原来“老东北”平时乱糟糟的,体现在工作上,三年的文件,公用电脑从桌面到里面,全是乱糟糟的,“老东北”一忙,“一两”连需要的文件都找不到,更别说还有新人要面对的其他问题了。“老东北”可不是运维侠小白,直接给“老球”打小报告,“老球”还是那句耳熟能详的话,“让他马上滚蛋”。
运维侠小白想帮帮“一两”,于是去请教了他“女朋友”…
打工人必中的3大文件诅咒
打工人对混乱桌面的痛苦
“文件地狱”:新员工面对3年混乱的文件该如何
“僵尸文件夹”:找去年方案翻遍8层文件夹
“重复工作”:创建半年日工作报告
血咒总结得出,普通人年均浪费87小时在找文件
你不是在找文件,就是在找文件的路上。
从“桌面迷宫”到“极简禅境”,代码让文件自动列队喊你爸爸!
操作方式 | 时间消耗 | 错误率 |
---|---|---|
手动 | 300分钟 | 高出错 |
Python自动化 | 3分钟 | 0 |
二.代码示例
⚠️提示:这是我的一个文件夹,我们将它整理,用于演示。
整体工作流程
以整理货物为例
[运行脚本文件] --> [创建分类货架]
--> [扫描原始货架]
--> {判断商品类别}
-->|匹配成功| --> [放入对应货架]
-->|无匹配| --> [留在原位]
--> [检查是否重复] --> [重复的修改标签]
--> [完成整理]
⚠️避免报错:
- 文件路径 没有写绝对路径默认是处理python代码所在路径的文件,因此需要把代码文件放到这个处理的文件同一文件夹里。
(1)创建分类文件夹
学会数据类型之字典
🚨 字典:categories像分类标签卡片,字典的键只能有一个,但可以对应多个值。
💻 代码:输出字典里的值
import os
# 创建分类文件夹
categories= {
"代码": [".py"],
"图片": [".jpg",".png"],
"文档": [".docx",".xlsx"]
}
for category in categories:
print(category)
执行代码效果:输出了字典里的值,证明成功!只要在循环里加入创建文件的命令即可创建所需文件夹
💻 代码:
import os
categories= {
"代码": [".py"],
"图片": [".jpg",".png"],
"文档": [".docx",".xlsx"]
}
for category in categories:
dir_path = os.path.join("整理后的文件", category)
os.makedirs(dir_path, exist_ok=True) # 创建分类文件夹
🚨 关键内容释义:
os.makedirs():相当于搭建新货架
exist_ok=True:表示如果货架已存在就不重复搭建
执行代码效果:
(2)查看需要整理的文件夹内容
💻 代码:
# 查看文件夹内容
import os
# 指定要整理的文件夹(示例用桌面,实际可修改)
folder_path = r"C:\Users\ZHAOY\PycharmProjects\1"
all_files = os.listdir(folder_path)
# 显示所有文件(就像把针线倒出来)
for file in all_files:
print(f"{file}")
执行代码效果:
(3)移动单个文件
💻 代码:
import shutil
# 定义源文件、目标文件夹的变量信息
src_file = r"C:\Users\ZHAOY\PycharmProjects\1\girlfriend.png"
dest_dir = "整理后的文件/图片"
# 调用移动函数,去移动
shutil.move(src_file,dest_dir)
执行代码效果:
(4)避免文件、文件夹名称重复
🚨名称重复,自动改名。 如果文件夹里存在2.png就返回重命名的文件名2(1).png。
💻 代码:
import os
def 生成不重复文件名(文件夹, 原文件名):
"""✅ 保证文件名不重复:重复的文件名自动改名"""
主名, 后缀 = os.path.splitext(原文件名) # 拆开名字和尾巴(如 .jpg)
新名字 = 原文件名 # 初始用原文件名
编号 = 1
# 📂 检查文件柜是否有重名文件
while os.path.exists(os.path.join(文件夹, 新名字)):
新名字 = f"{主名}({编号}){后缀}" # 添加编号
编号 += 1 # 数字+1
return 新名字 # ✅ 返回最终确定的名字
print(生成不重复文件名(r"C:\Users\ZHAOY\PycharmProjects\1", "2.png"))
# 如果已有"名称相同.png",返回"名称相同(1).jpg"
执行代码效果:
当C:\Users\ZHAOY\PycharmProjects\1文件夹里不存在2.png,输出原文件名2.png
当C:\Users\ZHAOY\PycharmProjects\1文件夹里存在2.png,输出原文件名2(1).png
(5)完整脚本
🚨注意:不要存在“整理后的文件”这个名称文件夹,否则,会重复创建
💻 代码:
# final_文件整理大师.py
# 注意:不要存在“整理后的文件”这个名称文件夹,否则,会重复创建
import os
import shutil
def 整理文件(原文件夹, 目标文件夹="整理后的文件"):
# 创建分类字典
文件类型 = {
"图片": [".jpg", ".jpeg", ".png", ".gif"],
"文档": [".doc", ".docx", ".pdf", ".txt"],
"音乐": [".mp3", ".wav", ".flac"],
"视频": [".mp4", ".mov", ".avi"],
"其他": []
}
# 创建分类文件夹
for 类别 in 文件类型:
os.makedirs(os.path.join(目标文件夹, 类别), exist_ok=True)
# 遍历整理文件
for 文件名 in os.listdir(原文件夹):
# 跳过隐藏文件和文件夹
if 文件名.startswith('.') or os.path.isdir(os.path.join(原文件夹, 文件名)):
continue
# 获取文件扩展名
扩展名 = os.path.splitext(文件名)[1].lower()
# 确定文件类别
目标类别 = "其他"
for 类别, 扩展列表 in 文件类型.items():
if 扩展名 in 扩展列表:
目标类别 = 类别
break
# 处理文件路径
原路径 = os.path.join(原文件夹, 文件名)
目标路径 = os.path.join(目标文件夹, 目标类别, 文件名)
# 处理重复文件
唯一文件名 = get_unique_path(os.path.join(目标文件夹, 目标类别), 文件名)
最终路径 = os.path.join(目标文件夹, 目标类别, 唯一文件名)
# 移动文件
shutil.move(原路径, 最终路径)
print(f"已整理:{文件名} → {目标类别}")
def get_unique_path(目标文件夹, 文件名):
"""生成不重复的文件名"""
主名, 扩展名 = os.path.splitext(文件名)
序号 = 1
while os.path.exists(os.path.join(目标文件夹, 文件名)):
文件名 = f"{主名}({序号}){扩展名}"
序号 += 1
return 文件名
if __name__ == "__main__":
# 使用示例(修改为您的实际路径)
整理文件(r"C:\Users\ZHAOY\PycharmProjects\1")
print("文件整理完成!已焕然一新!")
执行代码效果:
⏰扩展:平时我们需要被整理的文件类型,整理后的文件夹需求和示例的不一样,可根据实际需要略微修改代码即可!
💡 朋友们!你平时用Excel最头疼的操作是什么?
💡在评论区告诉我,下期教你用Python搞定!