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
  第一次发帖,欢迎指正!



【原创声明】转载请标明出处:https://www.cnblogs.com/surecheun/
原文地址:https://www.cnblogs.com/surecheun/p/9648985.html