使用python批量修改文件、文件夹名称(包括后缀)

1.函数的变量简述
该函数一共有三个变量,分别是path、regex、sub_content

  • path:需要进行修改的文件/文件夹所在的路径(假设文件路径为/A/B/C/haha.pdf,我们要修改haha.pdf文件,那么路径为/A/B/C;如果我们要修改文件夹C的名称,那么路径为/A/B)
  • regex:被替换的内容的正则表达式;如果仅需进行简单的字符串替换,可以直接写上该字符串;也可以直接修改文件的后缀哦
  • sub_content:替代内容

2.功能简述:
采用递归的方式,对该目录内的【所有】(包含子目录、子目录的子目录……中的内容)文件、文件夹的名称的目标内容进行修改【修改不可逆!!!不能使用Ctrl+Z撤销!!!所以要慎重!!!】

import os,re

def change_foldname(path, regex, sub_content):
	try:
		for dirpaths, dirnames, filenames in os.walk(path):
			# print(dirpaths,"\n",dirnames,"\n",filenames)
			if dirnames:
				for anysubdir in dirnames:
					old_subdir_path = path + "/" + anysubdir
					regex_format = re.compile(regex)
					new_folder_name = re.sub(regex, sub_content, anysubdir, 1)
					new_subdir_path = path + "/" + new_folder_name
					try:
						os.rename(old_subdir_path, new_subdir_path)
						print("【Foldername】更改foldername名成功!")

					except Exception  as reason:
						print("【Foldername】更改foldername出错!")
						print("【Foldername】出错路径为:{0}\n出错的folder为:{1}".format(dirpaths,anysubdir))
						print("【Foldername】出错原因为:",reason)

					change_foldname(new_subdir_path, regex, sub_content)
			else:
				print("【Foldername】路径{0}中没有folder了!".format(dirpaths))


	except Exception as reason:
		print("【Foldername】出错路径为:".format(dirpaths))
		print("【Foldername】出错原因为:",reason)



def change_filename(path, regex, sub_content):
	try:
		for dirpaths, dirnames, filenames in os.walk(path):
			# print(dirpaths,"\n",dirnames,"\n",filenames)

			if filenames:
				for anyfile in filenames:
					if anyfile == r'.DS_Store':
						pass
					else:
						old_file_path = path + "/" + anyfile
						regex_format = re.compile(regex)
						new_folder_name = re.sub(regex, sub_content, anyfile, 1)
						new_file_path = path + "/" + new_folder_name
						try:
							os.rename(old_file_path, new_file_path)
							print("【Filename】更改filename成功!")
						except Exception  as reason:
							print("【Filename】更改filename出错!")
							print("【Filename】出错路径为:{0}\n出错的file为:{1}".format(dirpaths, anyfile))
							print("【Filename】出错原因为:",reason)

			else:
				print("【Filename】路径{0}中没有file了!".format(dirpaths))


			if dirnames:
				for anysubdir in dirnames:
					subdir_path = path + "/" + anysubdir
					change_filename(subdir_path, regex, sub_content)
			else:
				print("【Filename】路径{0}中没有folder了!".format(dirpaths))

	except Exception as reason:
		print("【Filename】出错路径为:{1}".format(dirpaths))
		print("【Filename】出错原因为:",reason)


path = r"/Users/XXXXX/Desktop/XXXX"
regex = ".*\n\s\t......."(正则) 或 "李四"(指定字符串) 或"png"(文件后缀名)
sub_content = ".*\n\s\t......."(正则) 或 "李四"(指定字符串) 或 "pdf"(文件后缀名)  
change_filename(path, regex, sub_content)
# change_foldname(path, regex, sub_content)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值