基于Python的文件批量重命名(附详细过程解读)

0.闲言碎语

hi ~

欢迎关注公众号“壹贰叁言”!

啥都写,图一乐哈哈!

1.前因后果

前几日,我在用arcgis处理一些数据后,发现文件的命名不对,需要对文件进行重命名处理,
重命名第一个时
“啊,就这?”
处理第三个时
“嗯,还行”
处理完第一个文件夹时
“我
********”
这时候,我脑海里突然想起了在远方隔离的龙哥,有次聊天他问我
“Python是不是可以做比如文件批量重命名这种”
我的回答是
“Python会,我不会”
现在,
“能搞”

2.需求

我现在有一份数据,经过arcgis处理后,一共分为了13个文件夹,每个文件夹都包含了6个不同的文件,这6个文件又分别包含了7种不同格式的数据,数据格式是dbf、prj、sbn、sbx、shp、shx、xml。可见图2.1和图2.2

                                图2.1 13个文件夹

                                图 2.2 文件

图2.1中的文件夹的名字是化学元素的名字,图2.2中的文件名字是6个村的名字,现在我想要的将各个村的名字格式统一,每个村的名字后面加上所属元素如:A村_B,A村_Ca…同时,7种数据格式文件我只需要dbf、prj、shp、shx四种,其余的三种我希望可以被删除。

成功的格式如图2.3

                                                 图 2.3

3.Python代码

编码格式如不规范欢迎大佬指正

import os
import sys# 定义一个名字叫做rename的函数
def rename(filePath):"""批量重命名指定路径下的'.dbf', '.prj', '.shp', '.shx'格式的文件,重命名格式:文件_文件夹名字,并删除'.sbn', '.sbx', '.xml'格式的文件:param filePath: 文件夹的路径:return: """# 文件筛选条件condition1 = ('.dbf', '.prj', '.shp', '.shx')condition2 = ('.sbn', '.sbx', '.xml')# os.walk 查找文件for root, dirs, files in os.walk(filePath):# 文件夹名字mark = root.split('\\')[-1]# for循环遍历文件名字for fileName in files:if fileName != sys.argv[0]:if fileName.endswith(condition1):os.rename(os.path.join(root, fileName), os.path.join(root, fileName.split('.')[0] + '_' +mark + '.' + fileName.split('.')[-1]))print(fileName, '已经重命名成功了,乖乖,新名字是:', fileName.split('.')[0] + '_' + mark + '.'+ fileName.split('.')[-1])if fileName.endswith(condition2):delFileName = os.path.join(root, fileName)os.remove(delFileName)print(delFileName, '已经成功被移除。')if __name__ == '__main__':filePath = r'G:\村级裁剪'rename(filePath)

4.代码详解

本次所使用到的Python包主要是OS,是Python自带的包

第1、2行代码主要是引入OS包和sys包

import os
import sys

在本次中写了一个函数,函数主体包含了第5-32行代码,其功能是

批量重命名指定路径下的'.dbf', '.prj', '.shp', '.shx'格式的文件,重命名格式:文件_文件夹名字,
并删除'.sbn', '.sbx', '.xml'格式的文件

condiition1和condition2是我命名的两个条件,将7个格式分为了我想要的两类,

# 文件筛选条件
condition1 = ('.dbf', '.prj', '.shp', '.shx')
condition2 = ('.sbn', '.sbx', '.xml')

两个condition的类型是元组,用元组的原因是我在后面使用了endswith函数,对应于第24行代码,endswith的功能是判断是否以某个指定后缀结尾,而我希望可以判断多个指定后缀,其支持使用元组,如果想使用列表,可以使用关键词any,如

if any(fileName.endswith(condition) for condition in conditions)

需要清楚的是此时的conditions应是一个列表,如[’.dbf’, ‘.prj’, ‘.shp’, ‘.shx’]

第17行使用了函数os.walk()

for root, dirs, files in os.walk(path):

root 表示正在访问的当前目录
dirs 表示root当前目录下包含的子目录
files 表示root当前目录下包含的文件

第19行是取文件夹的名字,

mark = root.split('\\')[-1]

因为取到的root是一个路径,格式如下:

G:\村级裁剪\B

我目前能想到的取文件夹名字的方法是利用split函数,按照“\”进行分割(之所以用’\’是因为转义字符),这样取分割后的最后一个元素就是文件夹名字了,如果有大佬知道别的方法请指导学习一下。

第22行是一个for循环,遍历文件的名字,第22和23都是if判断语句,endswith作用可参考上面提到的,第25行是最重要的语句os.rename(src, dst)。

os.rename是用于命名文件或者目录,其中src是要修改的文件名,dst是修改后的文件名

os.path.join()作用是把文件路径和文件名组合在一起,这样os.rename()才能找到文件的位置

# for循环遍历文件名字
for fileName in files:if fileName != sys.argv[0]:if fileName.endswith(condition1):os.rename(os.path.join(root, fileName), os.path.join(root, fileName.split('.')[0] + '_' +mark + '.' + fileName.split('.')[-1]))print(fileName, '已经重命名成功了,乖乖,新名字是:', fileName.split('.')[0] + '_' + mark + '.'+ fileName.split('.')[-1])

需要注意的是文件的新名字是我用字符串拼接成的。

第29行-32行是判断文件是否满足第二个条件,如果满足则将其移除,最重要的语句是os.remove()

if fileName.endswith(condition2):delFileName = os.path.join(root, fileName)os.remove(delFileName)print(delFileName, '已经成功被移除。')

第35行-37行是一个主函数,其中filePath是存放文件的路径,rename()即是调用我写好上面的rename函数。

运行后的页面如图4.1所示,

                                      图4.1

整体其实不到一秒,这样就可以大大增加摸鱼的时间了

基于Python的文件批量重命名(附详细过程解读)相关推荐

  1. python如何对文件进行批量命名-利用Python对文件批量重命名

    由于要用到对无序的文件进行重命名,以下写了一个脚本,进行批量进行重命名. 基本格式是 i.后缀名 (i 循环条件下的数 ) 1 #coding:utf8 2 import os; 3 4 def re ...

  2. 使用python进行文件批量重命名

    python文件重命名 最近由于要处理大量的图片文件, 从网上下载下来的图片名称各不相同, 但又有一些规律, 故而采用python对文件进行批量重命名 目的:对文件名进行简单的分割处理, 提取出图片的 ...

  3. python之文件批量重命名

    修改之前将os的默认路径修改为需要修改文件的目录,否则会找不到文件 import os os.chdir('./dir') 批量修改文件名 import os ls=os.listdir('./') ...

  4. python文件批量改名_python文件批量重命名

    python文件批量重命名 代码如下: # -*- coding: gbk -*- import os class fileRename(): def __init__(self, path): se ...

  5. python 读取excel 批量 重命名文件夹

    python 读取excel 批量重命名 文件夹 需求 使用的库 旧颜和新欢 过程 renamefile.py operateExcel.py 最后打包生成exe 需求 接到老婆大人说帮同事写一个 有 ...

  6. Python+Excel:批量重命名多个工作簿

    应用场景 使用Python变成实现批量重命名文件的前提是文件名是规则的,如1月.2月.3月等,或者含有相同关键词的.如下图所示: 代码实现及注释 from pathlib import Path fo ...

  7. 文件批量重命名工具,批量修改文件名的实现思路

    在工作中可能会遇到文件数据成果已经制作完成后,遇到文件命名规则变更,需要对大量文件重命名,甚至修改目录结构的.本文介绍利用FME实现文件批量重命名的解决方法. 因为工作实际情况各不相同,文件重命名规则 ...

  8. 真正的全能文件批量重命名工具(命令形式)

    文件批量重命名工具大家都比较熟悉,这种工具虽然没什么技术含量,但是想设计好了非常不容易.功能简单的,几乎没什么用,很多需求都无法实现.功能复杂的,界面异常复杂,让人看到就眼花缭乱.就算号称最强大的文件 ...

  9. [生产力]ReNamer强大的文件批量重命名工具

    文章目录 推荐理由 使用范例 1. 添加要操作的文件 2. 添加命名规则 3. 一键重命名所有文件 下载链接 推荐理由 工作中我们常常遇到批量修改大量的文件名的需求,一个个重复的修改会浪费很多时间,对 ...

最新文章

  1. 我的puppet web 管理,彻底告别终端模式
  2. 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台
  3. WinRAR 5.70 下载、安装和广告弹框去除
  4. 04_05_06:设置线型风格(设置线型风格)、区域着色 (Shading Regions)、设置Spines
  5. Window Live Toolbar 初体验
  6. [css] 如何让一个块元素绝对居中?
  7. python2.7如何安装库_python 2.7 安装目录python如何连接数据库
  8. 内部排序的方法实验报告_python 十大经典排序算法
  9. 菜鸟上路-Web开发模式
  10. 力扣-387 字符串中的第一个唯一字符
  11. VBS脚本运行库 ——文本文件的建立、追加、删除等
  12. 深入浅出对话系统——任务型对话系统技术框架
  13. 风尚云网学前端----HTML特殊字符编码对照表
  14. CAN、485隔离电路分享
  15. win7托盘区没有蓝牙图标
  16. 剪切后的文件可以恢复吗?恢复剪切文件怎么办?
  17. 全球首发!惯性导航导论(剑桥大学)第三部分
  18. Android Studio 环信IM聊天设置用户头像
  19. 常见webshell工具
  20. matlab的积分公式,玩转matlab之一维 gauss 数值积分公式及matlab源代码

热门文章

  1. python 彩票排列组合_对福彩3D号码进行排列组合为例学习Python的itertools模块的用法...
  2. linux 修改文件句柄数限制
  3. Teams共享视频文件他人无法听到声音的解决方法
  4. 怎么激活win10企业版系统
  5. 拉普拉斯金字塔图像融合
  6. 【软考】 信息安全工程师教程 第六章 认证技术原理与应用
  7. 国内黑客团队“盘古”再出手,最新iPhone XS已被成功越狱
  8. 如何提高公司部门间协作效率
  9. 能提高亚马逊排名和转化的8个技巧(二)
  10. ECharts系列 - 柱状图(条形图)实例一