最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python批量修改文件名的实现代码

来源:动视网 责编:小采 时间:2020-11-27 14:38:10
文档

python批量修改文件名的实现代码

python批量修改文件名的实现代码: #coding:utf-8 #批量修改文件名 import os import re import datetime re_st = r'(\d+)\+\s?\((\d+)\)' #用于匹配旧的文件名,需含分组 re_match_old_file_name = re.compile(re_st) #要修改的目录 WORKING_
推荐度:
导读python批量修改文件名的实现代码: #coding:utf-8 #批量修改文件名 import os import re import datetime re_st = r'(\d+)\+\s?\((\d+)\)' #用于匹配旧的文件名,需含分组 re_match_old_file_name = re.compile(re_st) #要修改的目录 WORKING_


#coding:utf-8 
#批量修改文件名 
import os import re import datetime 
 
re_st = r'(d+)+s?((d+))'
 #用于匹配旧的文件名,需含分组 re_match_old_file_name = re.compile(re_st) 
 #要修改的目录 WORKING_PATH = r'F:Gallery'
 
 #---------------------------------------------------------------------- 
def rename_fomat(name): 
 """ 
 文件重命名格式组织模块(一般修改这里就可以了) 
 NOTE:返回类型必须是unicode 
 """
 if name: 
 re_rn = re_match_old_file_name.findall(name) 
 if re_rn and re_rn != []: 
 re_rn = re_rn[0] 
 num = int(re_rn) 
 new_nm = u'NO.%04d' % ( num) 
 return new_nm 
 #---------------------------------------------------------------------- 
def logs(error): 
 """ 
 错误记录 
 """
 log = '' 
 LOG_FILE = open(r'./log.txt', 'a') 
 live_info =""" 
========== 
Time : %s 
title : %s 
Path : 
%s 
========== 
""" % ( 
 datetime.datetime.now(), 
 str(error['title']), 
 str(error['index']), 
 ) 
 log += live_info 
 errors = error['error_paths'] 
 for item in errors: 
 item = '%s
' % item 
 log += item 
 log = log.encode('utf-8') 
 try: 
 LOG_FILE.write(log) 
 except IOError: 
 print u'写入日志失败'
 finally: 
 LOG_FILE.close() 
 #---------------------------------------------------------------------- 
def rename(old, new): 
 """ 
 文件重命名模块 
 return: 
 0:rename success 
 1:the new path is exists 
 -1:rename failed 
 """
 if not os.path.exists(new): 
 try: 
 os.renames(old, new) 
 return 0
 except IOError: 
 print 'path error:', new 
 return -1
 else: 
 return 1
 #---------------------------------------------------------------------- 
def get_dirs(path): 
 """ 
 获取目录列表 
 """
 if os.path.exists(path): 
 return os.listdir(path) 
 else: 
 return -1
 
 #---------------------------------------------------------------------- 
def get_input_result(word, choice): 
 """ 
 获取正确的输入结果 
 """
 correct_result = set(choice) 
 word = '===%s?
[in]:' % (word) 
 while True: 
 in_choice = raw_input(word) 
 if in_choice in correct_result: return in_choice 
 
 
 #---------------------------------------------------------------------- 
def batch_rename(index, dirs = []): 
 """ 
 批量修改文件 
 """
 index = unicode(index) 
 errors = [] 
 if dirs == []: 
 dirs = get_dirs(path = index) 
 if dirs and dirs != []: 
 for item in dirs: 
 item = unicode(item) 
 new_name = rename_fomat(item) 
 if new_name : 
 old_pt = u'%s\%s'% (index, item) 
 new_pt = u'%s\%s'% (index, new_name) 
 res_rn = rename(old_pt, new_pt) 
 if res_rn != 0: 
 errors.append(item) 
 else: 
 errors.append(item) 
 if errors and errors != []: 
 print 'Rename Failed:'
 logs({ 
 'index': index, 
 'title': 'Rename Failed' , 
 'error_paths': errors, 
 }) 
 for i, item in enumerate(errors): 
 print item, '|', 
 if i % 5 == 4: 
 print '' 
 print '' 
 else: 
 return -1
 #---------------------------------------------------------------------- 
def batch_rename_test(index): 
 """ 
 测试 
 返回过滤结果 
 """
 index = unicode(index) 
 errors = [] 
 correct = [] 
 dirs = get_dirs(path = index) 
 if dirs and dirs != []: 
 for x, item in enumerate(dirs): 
 item = unicode(item) 
 new_name = rename_fomat(item) 
 if new_name : 
 correct.append(item) 
 old_pt = u'%s\%s'% (index, item) 
 new_pt = u'%s\%s'% (index, new_name) 
 print '[%d]O: %s' % ( x + 1, old_pt) 
 print '[%d]N: %s' % ( x + 1, new_pt) 
 else: 
 errors.append(item) 
 if errors and errors != []: 
 print 'Not Match:'
 logs({ 
 'index': index, 
 'title': 'Not Match', 
 'error_paths': errors, 
 }) 
 for i, item in enumerate(errors): 
 print item, '|', 
 if i % 5 == 4: 
 print '' 
 print '' 
 return correct 
 #---------------------------------------------------------------------- 
def manage(index): 
 """ 
 程序组织块 
 """
 file_filter = batch_rename_test(index) 
 do_choice = get_input_result( 
 word = 'Do with this(y / n)', 
 choice = ['y', 'n'] 
 ) 
 if do_choice == 'y': 
 batch_rename(index, dirs= file_filter) 
 print 'Finished !'
 
 if __name__ == '__main__': 
 path = WORKING_PATH 
 manage(index = path)

文档

python批量修改文件名的实现代码

python批量修改文件名的实现代码: #coding:utf-8 #批量修改文件名 import os import re import datetime re_st = r'(\d+)\+\s?\((\d+)\)' #用于匹配旧的文件名,需含分组 re_match_old_file_name = re.compile(re_st) #要修改的目录 WORKING_
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top