• 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/
  • 相关阅读:
    一个完整的Oracle建表的例子
    【转】oracle 体系结构
    JMeter-Window10系统下设置环境变量
    JMeter 3.0 POST Body Data 中文乱码问题
    JMeter接口测试报错,反馈和postman不一样(二)
    JMeter参数文件的相对路径
    JMeter正则表达式提取器说明
    JMeter接口测试报错,反馈和postman不一样(一)
    协程实现多边同时交互原理
    python 多线程中子线程和主线程相互通信
  • 原文地址:https://www.cnblogs.com/surecheun/p/9648985.html
Copyright © 2020-2023  润新知