【办公类-19-03】办公中的思考——Python批量统一文件名的序号(保教主任整理打印文件)
背景需求:
为迎接督导检查,保教主任从各条线收集文本资料。并在每个文件名称前手动编号。但是她嘀咕道:”为什么两套资料放在一个文件里就不是按照数字序号排序?,有的是1X-,有的是40X,看起来很乱”

我提示她按“名称”把文件名排序,果然实现了“先1后4”数字排序模式。
同时我也看到,她用了两类数字格式:第一类是“工作计划,编号为1-X;第二类为考评表,编号为40X。看起来模式不统一。
”幸好这些文件只有2位数的数量,要是100份,还要编号3位数001-999“

于是我自告奋勇,要调整所有的数字序号为”0X-XX (空格)“的样式(不超过50份,两位数)
思路:
分析现有首数字情况:
(1)第一种是三个字符”1-X“,变成6个字符(0X-XX(空格))
(1)第二种是三个字符”40X“,变成6个字符(04-XX(空格))

一开始,我尝试用”某个字“切割然后拼接的方法,比如数字4作为分割点,拼接新的名字,

但是出现了404这个docx后面的名称都不见的问题。(要因为有两个4,但是提取时只选择第1个4到第2个4之间的信息。第2个4后面的文件名被忽略。

所以分割改名法不是完全通用的改名神器,而要使用”正则表达式“提取需要保留的部分
第一步:分类(两个格式——401类&1-1类)
![]() | ![]() |
第1步:简单——修改401类
特点:18分文件名都是前3位数(占3个位置,并且与后面文件名中间没有空格),改成“04-01(空格)”的格式
思路:第1个4是共有的,需要改成“04-”,第2-3位数字是号码,序号变成“01 ”“02 ”……“18 ”(后面有空格)

import os
import timepath =r"C:\Users\jg2yXRZ\OneDrive\桌面\2023年2月督导室检查资料 - 副本\401"fileList=os.listdir(path)a=1
for file in fileList: # 04-是共有的信息,后面2-3位是a的变化数字默认2位数,# file[3:]代表文倩前三个数字被删除,保留2个数字后面部分的信息(包含docx)newname='04-{} '.format('%02d'%a)+file[3:]# 文件旧路径oldname_path = os.path.join(path,file)# 文件新路径newname_path = os.path.join(path,newname)# 新旧对调os.rename(oldname_path, newname_path) a+=1

关键点

第2步:略复杂——修改1-1类
特点:18分文件名都是前3位数(占3个位置,与文件名中间部分有空格,部分无空格),改成“04-01(空格)”的格式
思路:第1个数字有1、2、3,第2个字是“-”,第3-4位有1位数、也有2位数。需要改成“0X-0X”

问题:由于1-X这套文件中前面数字的长度不统一,所以修改起来略复杂
步骤1:因为有一个1-10,所以先通过'-',把数字改成0x-0X(10前面也加0)
import os
import timepath =r"C:\Users\jg2yXRZ\OneDrive\桌面\2023年2月督导室检查资料 - 副本\1-1 - 副本"
fileList=os.listdir(path)
# a=1
for file in fileList: split_str = file.split('-')newname1 = split_str[0] # _的第0部分=序号 print(newname1)newname2= split_str[1] # _的第0部分=序号 print(newname2)newname='0'+newname1+'-0'+newname2# 文件旧路径oldname_path = os.path.join(path,file)# 文件新路径newname_path = os.path.join(path,newname)# 新旧对调os.rename(oldname_path, newname_path)

因为就1个01-010,所以我就手动删除了左边的0(见下图),保证前面四个数字占五个格子——“0X-0X”
步骤2:删除各种空格(序号与汉字之间有不同长度的空格)

import os
import timepath =r"C:\Users\jg2yXRZ\OneDrive\桌面\2023年2月督导室检查资料 - 副本\1-1 - 副本"
for filename in os.listdir(path):newName = str(filename)newName = newName.replace(' ', '') #此处可以自行修改变成去除空格or去除逗号等等os.rename(os.path.join(path,filename),os.path.join(path,newName))print("文件: ",filename,"——>",newName," 重命名已完成!")

步骤3,提取前5个字、提取后N个汉字,中间加空格
import os
import timepath =r"C:\Users\jg2yXRZ\OneDrive\桌面\2023年2月督导室检查资料 - 副本\1-1 - 副本"fileList=os.listdir(path)for file in fileList: # file[0:5]代表文件前5个数字,file[5:]代表文件前后面的所有汉字和后缀),组合后中间加空格newname1=file[0:5]newname2=file[5:]newname=newname1+' '+newname2# 文件旧路径oldname_path = os.path.join(path,file)# 文件新路径newname_path = os.path.join(path,newname)# 新旧对调os.rename(oldname_path, newname_path)

所有的号码都统一了(前后对比)
![]() | ![]() |
为什么运行前最后的编号是418(4号文件18′),运行后编号04-19(4号文件19份)?

查了一下,原来之前保教主任提供的文件是手动编号,其中有错误(编了两个415后面416-418实际少了;但用Python遍历循环编a=1 a+=1中,就会自动生成19个数字,
启示
因此,用Python编号不仅比人工编号速度块,同时也比人工编号准确度高,也有批量修改编号的可能性(编号数字后面加空格,便于切割修改)
相关文章:

【办公类-19-03】办公中的思考——Python批量统一文件名的序号(保教主任整理打印文件)
背景需求:为迎接督导检查,保教主任从各条线收集文本资料。并在每个文件名称前手动编号。但是她嘀咕道:”为什么两套资料放在一个文件里就不是按照数字序号排序?,有的是1X-,有的是40X,看起来很乱…...

MySQL约束
约束约束总结约束 1、概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2、目的:保证数据库中数据的正确、有效性和完整性。 3、分类: 注意:约束是作用于表中字段上的,可以在创建表/修改表…...

x86 平台利用 qemu-user-static 实现 arm64 平台 docker 镜像的运行和构建
文章目录[toc]关于 docker 版本查看是否开启 experimental 功能开启 experimental 功能查看当前环境平台拉取一个 arm 平台的容器运行一个 arm 平台的容器整一个 qemu-user-static注册可支持的架构解释器尝试启动 arm64 镜像尝试启动 ppc64le 镜像后台运行 arm64 容器build 一个…...
找工作经验分享
好的简历的特点:简洁:不要使用花里胡俏的简历模板,一般就是一行行写下来那种就行主次分明:一定要有重点,让面试了解你强项是什么首先当然是突出技术,不要花大批篇幅在个人信息、兴趣爱好等,重点…...

C语言学习之路--操作符篇,从知识到实战
目录一、前言二、操作符分类三、算术操作符四、移位操作符1、左移操作符2、右移操作符五、位操作符拓展1、不能创建临时变量(第三个变量),实现两个数的交换。2、编写代码实现:求一个整数存储在内存中的二进制中1的个数。六、赋值操…...
【华为OD机试2023】端口合并 C++ Java Python
【华为OD机试2023】端口合并 C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出,input/cin接收输入、…...
C++常用头文件整理
#include <iostream> 输入输出流,调用该函数使用cin,cout#include <iomanip> mainp是mainpular(操纵器)的缩写,可以调用一些函数,如fixed()<<setprecision()等#include <cmath> 调用数学函数#include &l…...
Linux内核4.14版本——drm框架分析(2)——connector分析
目录 1. drm_connector结构体 1.1 struct list_head head 1.2 struct drm_mode_object base 1.3 base.properties 1.4 uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER] 1.5 struct drm_encoder *encoder 1.6 struct list_head probed_modes 1.7 struct list_head mod…...
dev GridControl 按条件纵向合并单元格
dev GridControl 按条件纵向合并单元格 gridView5.OptionsView.AllowCellMerge true; gridView5.CellMerge gridView5_CellMerge; //自定义合并单元格监听事件void gridView5_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e){int rowHandle1…...

aws eks 集群初始化过程中pause容器的启动逻辑
eks集群默认策略在磁盘使用量达到threshold时会清除镜像,其中pause镜像也可能会被清除 https://aws.amazon.com/cn/premiumsupport/knowledge-center/eks-worker-nodes-image-cache/ pause容器能够为pod创建初始的名称空间,pod的内的容器共享其中的网络空…...

Numpy专栏目录(长期更新)
文章目录数组基础文件与字符串多项式分布Numpy绝对可以说是支撑Python地位的最重要的包了,几乎所有能叫出名的Python计算库,都不可避免地调用了Numpy,Numpy官网也列出了一些,大致如下图这样,堪称科学计算领域的瑞士军刀…...

English Learning - L2 第1次小组纠音 [ɑː] [ɔː] [uː] 2023.2.25 周六
English Learning - L2 第1次小组纠音 [ɑː] [ɔː] [uː] 2023.2.25 周六共性问题分析大后元音 [ɑː]大后元音 [ɔː]后元音 [uː]我的发音问题后元音 [uː]大后元音 [ɑː] 和 [ɔː]纠音过程第一次第二次第三次共性问题分析 大后元音 [ɑː] 嘴唇过于松散,没…...

博客系统程序(页面设计)
咱们学习javaEE的目的就是完成一个网站.在当前学习的基础上,已经可以完成我们的博客系统的页面的设计了!!!首先我们要进行统筹规划:首先我们的博客页面将会有4个页面:1.博客列表页2.博客详情页显示一个博客的具体内容:3.登录页就是用户输入用户名和页面的地方4.博客编辑页发布新…...
【死锁的排查工具有哪些?】
死锁是指两个或多个进程(线程)相互等待对方持有的资源,导致无法继续执行的情况。在并发编程中,死锁是一个常见的问题,需要使用专门的工具来进行排查和解决。 以下是常用的死锁排查工具: jstack:…...

JUC包:CyclicBarrier源码+实例讲解
1 缘起 上篇文章讲到了CountDownLatch:https://blog.csdn.net/Xin_101/article/details/129116170 作为同系的佼佼者,不得不提CyclicBarrier, 设计理念相似,都是多线程等待,但是,应用的技术以及功能不同&a…...

Trace、Metrics、Logging 选型
背景分布式追踪的起源自从微服务的兴起开始,整个系统架构开始变得极为庞大和复杂,但是服务之间的调用关系,调用消耗时间等等信息却依然是半黑盒的状态。为了能够将调用的链路进行串联,将系统的各种指标数据展示出来以使得系统的链…...
Java验证码
文章目录一、验证码概述二、Java原生验证码1、随机数字验证码2、随机数字和字母验证码3、运算验证码三、引入三方验证码一、验证码概述 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全…...
5天带你读完《Effective Java》(四)
《Effective Java》是Java开发领域无可争议的经典之作,连Java之父James Gosling都说: “如果说我需要一本Java编程的书,那就是它了”。它为Java程序员提供了90个富有价值的编程准则,适合对Java开发有一定经验想要继续深入的程序员…...
探索密码学的未来:SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算
密码算法在现代通信与信息安全中发挥着至关重要的作用,SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算等密码算法被广泛应用于各种信息安全领域。本篇博客将会为大家介绍这些密码算法,以及它们在信息安全中的作用和应用。 一、SM1、SM…...

【教程】去水印开源工具Lama Cleaner在Windows的安装和使用
一、Lama Cleaner是什么? Lama Cleaner是一款开源且免费的人工学习图片去水印程序(个人主要学习用途),没有图片分辨率限制(个人使用暂未发现),并且保存的图片质量很高(个人觉得跟原…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...