首页 > 编程语言 > 详细

python --批量重命名文件名

时间:2015-12-16 09:27:10      阅读:381      评论:0      收藏:0      [点我收藏+]

转自:http://www.cnblogs.com/pzxbc/archive/2012/03/17/2404060.html

  代码

技术分享
#!\usr\bin\env python
# -*- coding: utf-8 -*-
# Author: PZX
# FileName: batchrename.py
# Function: 批量命名某一文件夹下的文件名

import sys
import os

def UsePrompt():
#如果省略path,则path为当前路径
print ‘Useage: batchrename.py [path] newfilenames‘
sys.exit()

def BatchRename(path, pattern):
#设置路径
os.chdir(path)
fileList = os.listdir(path)

dotIndex = pattern.rfind(‘.‘)
fileName = pattern[ : dotIndex]
fileExt = pattern[dotIndex : ]
genNum = 0
for fileItem in fileList:
fileFullName = fileName + ‘ (‘ + str(genNum) + ‘)‘ + fileExt
os.rename(fileItem, fileFullName)
print (fileItem + ‘ => ‘ + fileFullName)
genNum += 1

def main():
if len(sys.argv) == 3:
path = sys.argv[1]
pattern = sys.argv[2]
elif len(sys.argv) == 2:
path = os.getcwd()
pattern = sys.argv[1]
else:
UsePrompt()
confirm = raw_input(‘Confirm(y|n): ‘)
if confirm == ‘n‘:
sys.exit()
BatchRename(path, pattern)

if __name__ == ‘__main__‘:
main()  
技术分享

 新增:

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

  

技术分享
#!\usr\bin\env python
# -*- coding: utf-8 -*-
# Author: PZX
# FileName: batchrename.py
# Function: 批量命名某一文件夹下的文件名

import sys
import os
import os.path
import pickle

def UsePrompt():
#如果省略path,则path为当前路径
print ‘Useage: batchrename.py [path] [newfilenames | /r]‘
print ‘\tuse /r to cancel the renaming operation‘
sys.exit()

def BatchRename(path, pattern):
#设置路径
os.chdir(path)
fileList = os.listdir(path)

dotIndex = pattern.rfind(‘.‘)
fileName = pattern[ : dotIndex]
fileExt = pattern[dotIndex : ]
genNum = 0
fileNameDict = {}
for fileItem in fileList:
fileFullName = fileName + ‘ (‘ + str(genNum) + ‘)‘ + fileExt
os.rename(fileItem, fileFullName)
genNum += 1
print (str(genNum) + ‘: ‘ + fileItem + ‘ => ‘ + fileFullName)
fileNameDict[fileItem] = fileFullName

#保存重命名的记录
recordDir = os.path.dirname(__file__)
recordPath = os.path.join(recordDir, ‘batchrenamerecord‘)
recordFile = file(recordPath, ‘wb‘)
pickle.dump(path, recordFile, pickle.HIGHEST_PROTOCOL)
pickle.dump(fileNameDict, recordFile, pickle.HIGHEST_PROTOCOL)
recordFile.close()

def CancelBatchRename():
#读取上一次重命名的记录文件
recordDir = os.path.dirname(__file__)
recordPath = os.path.join(recordDir, ‘batchrenamerecord‘)
recordFile = file(recordPath, ‘rb‘)
path = pickle.load(recordFile)
fileNameDict = pickle.load(recordFile)
recordFile.close()

os.chdir(path)

#撤销上一次重命名
genNum = 0
newFileNameDict = {}
for orgName, newName in fileNameDict.items():
os.rename(newName, orgName)
genNum += 1
print (str(genNum) + ‘: ‘ + newName + ‘ => ‘ + orgName)
newFileNameDict[newName] = orgName

recordDir = os.path.dirname(__file__)
recordPath = os.path.join(recordDir, ‘batchrenamerecord‘)
recordFile = file(recordPath, ‘wb‘)
pickle.dump(path, recordFile, pickle.HIGHEST_PROTOCOL)
pickle.dump(newFileNameDict, recordFile, pickle.HIGHEST_PROTOCOL)
recordFile.close()


def main():
cancelling = False
if len(sys.argv) == 3:
path = sys.argv[1]
pattern = sys.argv[2]
elif len(sys.argv) == 2:
if sys.argv[1] == ‘/r‘:
cancelling = True
else:
path = os.getcwd()
pattern = sys.argv[1]
else:
UsePrompt()
confirm = raw_input(‘Confirm(y|n): ‘)
if confirm == ‘n‘:
sys.exit()
if cancelling:
CancelBatchRename()
else:
BatchRename(path, pattern)

if __name__ == ‘__main__‘:
main()

python --批量重命名文件名

原文:http://www.cnblogs.com/saryli/p/5050038.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!