复制代码 代码如下:
#Filename:brn.py
#Description: batch replace certain words in file names
#Use to bat rename the file in a dir(modify the suffix from a to b) for Windows Vista OS
import sys
import os
import fnmatch
import re
#parse params
p=input(\”Please input work directory(current path for enter):\”)
if p==\’\\r\’:
p=\’.\’
p=p.rstrip(\’\\r\’)
print (p)
while not os.path.exists(p):
print (p+\’ is not existed.Please input the work directory:\’)
p=input(\”Please input work directory(current path for enter):\”)
s=input(\”Please enter the words which need be modified(must):\”)
while s==\’\\r\’:
s=input(\”Please enter the words which need be replaced(must):\”)
s=s.rstrip(\’\\r\’)
d=input(\”Please enter the words which want to change to(must):\”)
while d==\’\\r\’:
d=input(\”Please enter the words which want to change to(must):\”)
d=d.rstrip(\’\\r\’)
try:
sure=input(\”Are you sure to rename the file named *\”+s+\”*\”+\” to *\”+d+\”*\”+\” in directory \”+p+\”? y/n:\”)
sure=sure.rstrip(\’\\r\’)
if sure!=\’y\’:
print (\”Cancel\”)
else:
for root, dirs, files in os.walk(p, True):
for file in files:
print (os.path.join(root,file))
if os.path.isfile(os.path.join(root,file)):#Only file is file,not a dir ,do this
if fnmatch.fnmatch(file, \’*\’+s+\’*\’):
f=str(file).replace(s,d)
if p==\’.\’:
command=\’move \’+str(file)+\” \”+f
else:
command=\”move \”+os.path.join(root,file)+\” \”+os.path.join(root,f)
print (command)
if os.system(command)==0:#do actual rename
print (\”Rename \”+str(file)+\” to \”+f+\” success\”)
else:
print (\”Rename \”+str(file)+\” to \”+f+\” failed\”)
#else:
#print str(file)+\” is a directory.omit\”
except IndexError:
print (IndexError.message)