python批量修改文件名
最近工作需要给大量文件改名。恰巧,本人又在自学python,所以就想用python写个程序来自动修改相应的文件名。下面就通过代码来介绍一下我的做法吧。
先说一下,我的工作要求是,在所有的数据文件前加上数据所在文件夹的名字,改完名字后把所有的文件汇总到一个新的文件夹。我要处理的文件有的存放在次最后层目录、有的存放在最后一层目录(无论存放在哪里,最后加上的名字都是次次后层文件夹的名字)。所以,我要先判断我取到的文件名是否是文件夹。如果是文件夹的话,就调用一个处理文件夹的函数;若果是目标文件的话,就调用处理文件的函数。
具体代码如下:
#说明:本人运行此程序的环境:win10+python2.7+sublime text2
# encoding=utf-8
import os
import os.path
import shutil
#定义一个处理文件的函数
def myrename(path,newpath,filename,filelist): #filename是要处理的文件名,filelist是要加上的文件夹的名字
#判断path是否存在
if os.path.exists(path):
newfilename = filelist + filename
oldd = path
newd = os.path.join(newpath,newfilename)
os.rename(oldd,newd) #如果你不想改变文件的所在位置,那么把上一句的newd改为os.path.join(path,newfilename)即可
else:
print "path error!"
#定义一个处理文件夹的函数
def yrename(path,newpath,filelist):
#判断path是否存在
if os.path.exists(path):
filenames = os.listdir(path) #获取该文件夹下的文件名
for filename in filenames: #循环内容和处理文件的函数原理一样
newfilename = filelist + filename
oldd = os.path.join(path,filename)
newd = os.path.join(newpath,newfilename)
os.rename(oldd,newd)
print "done!"
else:
print "path error!"
path = '你要处理的文件的路径' #格式为'D:\...\...'
path = unicode(path, "utf-8") #如果你的路径含有中文,则需要加上这一句!
newpath = '你处理完的文件要汇总到的文件夹路径' #格式和path的一样
newpath = unicode(newpath, "utf-8") #如果路径含有中文,也要加这一句
filelists = os.listdir(path)
for filelist in filelists:
#print filelist(此句为我自己查看结果所用,可以不要)
path1 = os.path.join(path,filelist)
filelists1 = os.listdir(path1)
for filelist1 in filelists1:
path2 = os.path.join(path1,filelist1)
if os.path.isdir(path2): #!!os.isdir()的参数一定要是路径,我之前一直用文件名,然后总是得不到正确的逻辑!!所以才有上一句的join
yrename(path2,newpath,filelist) #调用处理文件夹的函数
else:
myrename(path2,newpath,filelist1,filelist)#调用处理文件名的函数
print "over" #处理完后,打印over
第一次发帖,欢迎指正!