【办公类-19-03】办公中的思考——Python批量统一文件名的序号(保教主任整理打印文件)

news2024/11/20 8:46:36

背景需求:

为迎接督导检查,保教主任从各条线收集文本资料。并在每个文件名称前手动编号。但是她嘀咕道:”为什么两套资料放在一个文件里就不是按照数字序号排序?,有的是1X-,有的是40X,看起来很乱”

我提示她按“名称”把文件名排序,果然实现了“先1后4”数字排序模式。

同时我也看到,她用了两类数字格式:第一类是“工作计划,编号为1-X;第二类为考评表,编号为40X。看起来模式不统一。

”幸好这些文件只有2位数的数量,要是100份,还要编号3位数001-999“

于是我自告奋勇,要调整所有的数字序号为”0X-XX (空格)“的样式(不超过50份,两位数)

思路:

  1. 分析现有首数字情况:

(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 time


path =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 time


path =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 time

path =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 time

path =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编号不仅比人工编号速度块,同时也比人工编号准确度高,也有批量修改编号的可能性(编号数字后面加空格,便于切割修改)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/388154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20230304 CF855 div3 vp

Dashboard - Codeforces Round 855 (Div. 3) - Codeforces呃呃,评价是,毫无进步呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃呃该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训了该加训…

有关平方或高次方的公式整理一元高次方程的求解

Part.I Introduction 这篇博文记录一下数学中常用的有关平方或高次方的一些公式。 Chap.I 一些结论 下面一部分汇总了一些重要的结论 完全平方公式:(ab)2a22abb2(ab)^2a^22abb^2(ab)2a22abb2平方差公式:a2−b2(ab)(a−b)a^2-b^2(ab)(a-b)a2−b2(ab)(…

Spring——Bean管理-注解方式进行属性注入

Spring针对Bean管理中创建对象提供的注解有哪些?Component:普通Service:业务逻辑层Controller:controller层Repository:dao层用注解的方式是为什么?简化xml方式开发,只需要注解就可以完成在配置…

【Redis场景5】集群秒杀优化-分布式锁

集群环境下的秒杀问题 前序 【Redis场景1】用户登录注册 【Redis场景2】缓存更新策略(双写一致) 【Redis场景3】缓存穿透、击穿问题 【Redis场景拓展】秒杀问题-全局唯一ID生成策略 【Redis场景4】单机环境下秒杀问题 在单机环境下的并发问题,我们可以使用相关…

39. 实战:基于api接口实现视频解析播放(32接口,窗口化操作,可导出exe,附源码)

目录 前言 目的 思路 代码实现 需要导入的模块 1. 导入解析网站列表,实现解析过程 2. 设计UI界面 3. 设置窗口居中和循环执行 4. 注意事项 完整源码 运行效果 总结 前言 本节将类似34. 实战:基于某api实现歌曲检索与下载(附完整…

SpringCloud:Nacos的安装(Windows,Linux)

目录 一、认识和安装Nacos 1、下载 2、点击进入Github,进入Releases 3、点击Tags 4、解压(Windows版) 5、端口配置 6、启动 7、访问 二、Linux系统安装Nacos 1、打开虚拟机,使用xshell连接虚拟机,Nacos依赖于…

JVM内置锁synchronized关键字详解

目录 JVM内置锁synchronized关键字详解 设计同步器的意义 如何解决线程并发安全问题? synchronized原理详解 synchronized底层原理 synchronized在jdk1.6前后的变化【重点】 jdk小于1.6时 jdk>1.6时 轻量级锁何时升级为重量级锁??…

【ROS学习笔记10】ROS中配置自定义Cpp头文件和导入自定义Python库

【ROS学习笔记10】ROS中配置自定义Cpp头文件和导入自定义Python库 文章目录【ROS学习笔记10】ROS中配置自定义Cpp头文件和导入自定义Python库一、ROS中的头文件和源文件1.1 自定义头文件调用1.2 自定义源文件调用二、Python模块的导入Reference写在前面,本系列笔记参…

springBoot 启动指定配置文件环境多种方案

springBoot 启动指定配置文件环境理论上是有多种方案的,一般都是结合我们的实际业务选择不同的方案,比如,有pom.xml文件指定、maven命令行指定、配置文件指定、启动jar包时指定等方案,今天我们一一分享一下,以供参考&a…

Java知识复习(十二)Docker

1、容器 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于 Linux 和…

Redis学习(一):NoSQL概述

为什么要使用Nosql 现在是大数据时代,过大的数据一般的数据库无法进行分析处理了。 单机MySQL的年代 90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够! 那个时候,更多的去使用静态网站,服务器…

TD算法超详细解释,一篇文章看透彻!

【已解决】TD算法超详细解释和实现(Sarsa,n-step Sarsa,Q-learning)一篇文章看透彻! 郑重声明:本系列内容来源 赵世钰(Shiyu Zhao)教授的强化学习数学原理系列,本推文出于非商业目的分享个人学习…

DockerFile创建及案例

DockerFile dockerfile是用来构建docker镜像的文件,命令脚本参数脚本! 构建步骤 编写一个dockerfile文件docker build 构建成为一个对象docker run 运行镜像docker push 发布镜像(DockerHub、阿里云镜像仓库) 去官网Docker-Hub…

51单片机——串口通信,小白讲解,相互学习

通讯的基本概念 51单片机不仅可以实现串口通信,还可以通过IO口模拟实现多种其他通信,比如 SPI,IIC等,学习这些通信前,我们很有必要了解下通信的基本概念。通信的方式可以分为多种,按照数据传输方式可分为串…

MySQL——复合查询+表的内外连接

文章目录复合查询基本查询多表查询自连接子查询1、单行子查询2、多行子查询3、多列子查询4、在from子句中使用子查询😊5、合并查询结果unionunion all表的内连和外连内连接外连接左外连接右外连接复合查询 接下来我们就要进行的是多张表里进行查询操作,…

大数据相关面试题

linux 常见linux高级命令? top、iotopnetstatdf -hjmap -heaptarrpmps -efshell 用过的shell工具? awk Awk 命令详解 - 简书 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来…

MySQL中的Join连接查询

目录JoinJoin的分类笛卡尔积笛卡尔积出现的原因为什么不推荐有笛卡尔积出现那应该怎么做多表连接Join的使用小表驱动大表小表驱动大表是什么小表驱动大表的好处如何区分哪一个是驱动表和被驱动表Join原理及算法NLJ算法BNLJ算法总结:如何写入高性能的连接查询为什么M…

一阶低通滤波介绍及simulink模型

一阶低通滤波 背景介绍 低通滤波是一种过滤方式,规定低频信号能正常通过,而超过设定临界值的高频信号则被阻隔、减弱。低通滤波可以简单的认为:设定一个频率点,当信号频率高于这个频率时不能通过,在数字信号中&#…

对象图实例解析

总目录链接>> AutoSAR入门和实战系列总目录 文章目录更快、更好、更轻松地学习 UML对象图的目的对象图一览类到对象图示例 - 订单系统基本对象图符号和符号类图与对象图对象图 - 通过示例学习对象图示例 I - 公司结构对象图示例 II - POS对象图示例 III - Writer对象结构…

Java中的Comparator 与 Comparable详解

Comparator VS Comparable1. Comparator1.1 对一维数组进行排序1.2 对二维数组进行排序1.3 对对象数组进行排序2. Comparable3. 二者区别1. Comparator 通过源码发现Comparator是一个接口。 根据compare方法中的注释可以发现方法返回三种类型的值,正数、零、负数&a…