当前位置: 首页 > news >正文

【初入职场】文件地狱大逃亡:运维侠Python自动化逆袭之路4整理术(日省3h摸鱼真经)

一. “一两” 的烦恼

又来新同事,不知其名,但遇到问题他口头禅:“这不叫事,一两酒的事!”所以,大家喜欢叫他“一两“;

这不叫事的“一两“,也遇到了事;其实,这事说大不大,可是闹得‘一两’要离开公司。

原来“老东北”平时乱糟糟的,体现在工作上,三年的文件,公用电脑从桌面到里面,全是乱糟糟的,“老东北”一忙,“一两”连需要的文件都找不到,更别说还有新人要面对的其他问题了。“老东北”可不是运维侠小白,直接给“老球”打小报告,“老球”还是那句耳熟能详的话,“让他马上滚蛋”。

运维侠小白想帮帮“一两”,于是去请教了他“女朋友”…
在这里插入图片描述

打工人必中的3大文件诅咒

打工人对混乱桌面的痛苦

“文件地狱”:新员工面对3年混乱的文件该如何
“僵尸文件夹”:找去年方案翻遍8层文件夹
“重复工作”:创建半年日工作报告

血咒总结得出,普通人年均浪费87小时在找文件

你不是在找文件,就是在找文件的路上。

从“桌面迷宫”到“极简禅境”,代码让文件自动列队喊你爸爸!

操作方式时间消耗错误率
手动300分钟高出错
Python自动化3分钟0

二.代码示例

⚠️提示:这是我的一个文件夹,我们将它整理,用于演示。

在这里插入图片描述

整体工作流程
以整理货物为例

[运行脚本文件] --> [创建分类货架]--> [扫描原始货架]--> {判断商品类别}-->|匹配成功| --> [放入对应货架]-->|无匹配|   --> [留在原位]--> [检查是否重复] --> [重复的修改标签]--> [完成整理]

⚠️避免报错:

  1. 文件路径 没有写绝对路径默认是处理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  # 数字+1return 新名字  # ✅ 返回最终确定的名字
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 shutildef 整理文件(原文件夹, 目标文件夹="整理后的文件"):# 创建分类字典文件类型 = {"图片": [".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(文件名)序号 = 1while os.path.exists(os.path.join(目标文件夹, 文件名)):文件名 = f"{主名}({序号}){扩展名}"序号 += 1return 文件名if __name__ == "__main__":# 使用示例(修改为您的实际路径)整理文件(r"C:\Users\ZHAOY\PycharmProjects\1")print("文件整理完成!已焕然一新!")

执行代码效果:
在这里插入图片描述

⏰扩展:平时我们需要被整理的文件类型,整理后的文件夹需求和示例的不一样,可根据实际需要略微修改代码即可!

💡 朋友们!你平时用Excel最头疼的操作是什么?
💡在评论区告诉我,下期教你用Python搞定!


http://www.mrgr.cn/news/98220.html

相关文章:

  • 探秘数据库连接池:HikariCP与Tomcat JDBC
  • 第16届蓝桥杯c++省赛c组个人题解
  • Rasa 模拟实现超简易医生助手(适合初学练手)
  • Google 官方提示工程 (Prompt Engineering)白皮书 总结
  • JavaWeb-04-Web后端基础(SpringBootWeb、HTTP协议、分层解耦、IOC和DI)
  • Agent革命:Google AI白皮书解密未来智能体的进化之路
  • 双指针、滑动窗口
  • FTXUI 笔记(五)——基本交互组件
  • Java—— 文字版格斗游戏
  • 一种基于学习的多尺度方法及其在非弹性碰撞问题中的应用
  • 【Linux实践系列】:匿名管道收尾+完善shell外壳程序
  • # Shell脚本参数设计规范(DeepSeek指导)
  • 大模型到底是怎么产生的?一文揭秘大模型诞生全过程
  • Redis之缓存更新策略
  • Ubuntu系统美化
  • 回顾CSA,CSA复习
  • SpringAi 会话记忆功能
  • C++ 入门六:多态 —— 同一接口的多种实现之道
  • Spring Boot集成Nacos
  • 【BEPU V1物理】BEPUphysics v1 入门指南 汉化笔记#1