原文出处:http://www.cnblogs.com/pzxbc/archive/2012/03/17/2404060.html

 1 #!\usr\bin\env python
 2 # -*- coding: utf-8 -*-
 3 # Author: PZX
 4 # FileName: batchrename.py
 5 # Function: 批量命名某一文件夹下的文件名
 6
 7 import sys
 8 import os
 9
10 def UsePrompt():
11     #如果省略path,则path为当前路径
12     print 'Useage: batchrename.py [path] newfilenames'
13     sys.exit()
14
15 def BatchRename(path, pattern):
16     #设置路径
17     os.chdir(path)
18     fileList = os.listdir(path)
19
20     dotIndex = pattern.rfind('.')
21     fileName = pattern[ : dotIndex]
22     fileExt = pattern[dotIndex : ]
23     genNum = 0
24     for fileItem in fileList:
25         fileFullName = fileName + ' (' + str(genNum) + ')' + fileExt
26         os.rename(fileItem, fileFullName)
27         print (fileItem + ' => ' + fileFullName)
28         genNum += 1
29
30 def main():
31     if len(sys.argv) == 3:
32         path = sys.argv[1]
33         pattern = sys.argv[2]
34     elif len(sys.argv) == 2:
35         path = os.getcwd()
36         pattern = sys.argv[1]
37     else:
38         UsePrompt()
39     confirm = raw_input('Confirm(y|n): ')
40     if confirm == 'n':
41         sys.exit()
42     BatchRename(path, pattern)
43
44 if __name__ == '__main__':
45     main()

新增:

  添加撤销上次批量重命名功能。使用方法:batchrename.py /r

 1 #!\usr\bin\env python
 2 # -*- coding: utf-8 -*-
 3 # Author: PZX
 4 # FileName: batchrename.py
 5 # Function: 批量命名某一文件夹下的文件名
 6
 7 import sys
 8 import os
 9 import os.path
10 import pickle
11
12 def UsePrompt():
13     #如果省略path,则path为当前路径
14     print 'Useage: batchrename.py [path] [newfilenames | /r]'
15     print '\tuse /r to cancel the renaming operation'
16     sys.exit()
17
18 def BatchRename(path, pattern):
19     #设置路径
20     os.chdir(path)
21     fileList = os.listdir(path)
22
23     dotIndex = pattern.rfind('.')
24     fileName = pattern[ : dotIndex]
25     fileExt = pattern[dotIndex : ]
26     genNum = 0
27     fileNameDict = {}
28     for fileItem in fileList:
29         fileFullName = fileName + ' (' + str(genNum) + ')' + fileExt
30         os.rename(fileItem, fileFullName)
31         genNum += 1
32         print (str(genNum) + ': ' + fileItem + ' => ' + fileFullName)
33         fileNameDict[fileItem] = fileFullName
34
35     #保存重命名的记录
36     recordDir = os.path.dirname(__file__)
37     recordPath = os.path.join(recordDir, 'batchrenamerecord')
38     recordFile = file(recordPath, 'wb')
39     pickle.dump(path, recordFile, pickle.HIGHEST_PROTOCOL)
40     pickle.dump(fileNameDict, recordFile, pickle.HIGHEST_PROTOCOL)
41     recordFile.close()
42
43 def CancelBatchRename():
44     #读取上一次重命名的记录文件
45     recordDir = os.path.dirname(__file__)
46     recordPath = os.path.join(recordDir, 'batchrenamerecord')
47     recordFile = file(recordPath, 'rb')
48     path = pickle.load(recordFile)
49     fileNameDict = pickle.load(recordFile)
50     recordFile.close()
51
52     os.chdir(path)
53
54     #撤销上一次重命名
55     genNum = 0
56     newFileNameDict = {}
57     for orgName, newName in fileNameDict.items():
58         os.rename(newName, orgName)
59         genNum += 1
60         print (str(genNum) + ': ' + newName + ' => ' + orgName)
61         newFileNameDict[newName] = orgName
62
63     recordDir = os.path.dirname(__file__)
64     recordPath = os.path.join(recordDir, 'batchrenamerecord')
65     recordFile = file(recordPath, 'wb')
66     pickle.dump(path, recordFile, pickle.HIGHEST_PROTOCOL)
67     pickle.dump(newFileNameDict, recordFile, pickle.HIGHEST_PROTOCOL)
68     recordFile.close()
69
70
71 def main():
72     cancelling = False
73     if len(sys.argv) == 3:
74         path = sys.argv[1]
75         pattern = sys.argv[2]
76     elif len(sys.argv) == 2:
77         if sys.argv[1] == '/r':
78             cancelling = True
79         else:
80             path = os.getcwd()
81             pattern = sys.argv[1]
82     else:
83         UsePrompt()
84     confirm = raw_input('Confirm(y|n): ')
85     if confirm == 'n':
86         sys.exit()
87     if cancelling:
88         CancelBatchRename()
89     else:
90         BatchRename(path, pattern)
91
92 if __name__ == '__main__':
93     main()

转载于:https://www.cnblogs.com/imjc/p/imjc.html

Python 批量重命名文件相关推荐

  1. python下载文件并改名_第46p,8行代码,用Python批量重命名文件

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...

  2. Python批量重命名文件

    Python批量重命名文件 修改出处 有积分的小伙伴支持一下下载链接 对图片文件名重命名时看到了很有用的代码,针对本人重命名需要,做出如下修改: n=count + int(startNumber) ...

  3. 天天向上续 python代码_第46p,8行代码,用Python批量重命名文件

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...

  4. python中关于命名的例子_利用Python批量重命名文件(给非技术人员的Python实例参考)...

    Python是一门"优雅"的计算机语言,而且就算10岁的小朋友也能学会,我一直向我身边的同学朋友同事推荐,不管他会不会编程. 这一回我需要完成的任务是把"照片" ...

  5. python批量重命名文件下所有文件

    批量命名整个文件夹下的图片 import os def rename():i = 0path = r"D:\Desktop\shrdataset\traffic"filelist ...

  6. python 批量重命名文件_Python批量重命名文件的方法

    用到了os的两个接口: 1.列出文件夹中的所有文件(也包含目录)os.listdir(path) Return a list containing the names of the entries i ...

  7. 用Python批量重命名文件

    案例 今天,我们来整理文件夹中的文件,给某个文件夹下的所有文件重新命名.要求是给所有文件按照修改时间,按顺序在文件名前面加上编号.比如将文件资料.xlsx重命名为1. 资料.xlsx import o ...

  8. Python批量重命名考研资料

    Python批量重命名文件 零.问题引入 最近网上找了一些高等数学基础课程,当然免费的肯定少不了广告,我下载的就是下面这个样子 简直不能忍受,所以现在开始来重命名这些文件,可是现在下载了60多集,一个 ...

  9. python批量重命名指定目录下所有文件的后缀名

    python批量重命名指定目录下所有文件的后缀名 有个需求,需要把某个文件夹下所有后缀名为.abc的更改为.xyz; #批量重命名指定目录下面所有文件的后缀名. word_dir为需要更改后缀的文件夹 ...

最新文章

  1. 从TXT文本文档向Sql Server中批量导入数据
  2. EXC_BAO_ACCESS引起的奔溃信息
  3. 为什么要把进程/线程绑定到特定cpu核上运行?(cpu core id coreIdx)opdevsdk_sys_bindThreadCoreId()
  4. 喝清凉茶,吃绿豆汤看绿色奥运[我写绿色IT]
  5. Outlook通过RPC/RPC Over HTTPS访问Exchange邮箱
  6. [BZOJ3173][Tjoi2013]最长上升子序列
  7. python模拟上传多张图片
  8. vue的style绑定background-image url 写法
  9. 如何使用Python玩转PDF各种骚操作?你看了就知道。
  10. 几张清晰的图讲清楚什么是Java堆碎片?(内存碎片化)
  11. 大学计算机基础vfp程序设计课程试验报告簿,VF程序设计实验报告册(实践教程).doc...
  12. 【办公自动化Excel】开发工具的使用
  13. MySQL8.0 - 新特性 - Descending Index 1
  14. freesurfer对结构核磁共振成像分割输出结果介绍
  15. DestroyWindow无法销毁的问题
  16. 电脑录屏是哪个快捷键?3个录屏快捷键,教你快速录屏
  17. 你听说过FOC吗?FOC的原理是什么?
  18. python 3.8教程_Python 3.8 新功能全解
  19. java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw
  20. 【SWAT水文模型】SWAT水文模型建立及应用第四期: 气象数据的准备(中国区域高精度同化气象站CMADS)

热门文章

  1. java 父类私有成员_java父类私有成员
  2. PowerDesigner显示Comment注释栏
  3. el-input输入值无法在输入框显示
  4. DB2 exception: Cannot create PoolableConnectionFactory SQLCODE=-142
  5. 《数字摄影与摄像》学习笔记——摄影课理论基础
  6. C++STL优先队列小根堆大根堆自定义的应用
  7. 牛客竞赛,GDDU第十届文远知行杯新生程序设计竞赛,摸鱼记(BDEIKL题解,补G,ACFHJ)
  8. 计算机信息学中比较大小的代码,信息学奥赛计算机基础知识.doc
  9. linux的manual手册不存在,Linux笔记
  10. JavaScript文档对象模型document对象改变Html表单属性(4)