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

python批量修改文件名代码_python批量修改文件名的实现代码coding utf 8 批量修改文件名 importosimpo st r d s d 用于匹配旧的文件名 需含分组 re match old file name re compile re st 要修改的目录 WORKING PATH r F Gallery

#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\n’ % 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\n[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)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233082.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月19日 上午9:01
下一篇 2025年8月19日 上午9:22


相关推荐

  • 双击pycharm没反应_pycharm为啥运行不了

    双击pycharm没反应_pycharm为啥运行不了PYCHARM双击无反应初识python和深度学习,按网上教程安装好anaconda和pycharm后,发现anacondanavigator,pycharm以及anaconda里装好的jupyternotebook都启动不了。。。只能通过.bat打开最后还是网上大神nb,成功解决了我的问题,下面是我看到的三种解决方法1.重置winsock(未解决我的问题)以管理员身份打开cmd输入命令netshwinsockreset重启电脑2.修改pycharm64.exe.vmoption

    2022年8月27日
    7
  • adminLTE的介绍

    adminLTE的介绍一.adminLTE的介绍adminLTE的官方网站:adminLTE官方网站和github:adminLTE的github演示地址:adminLTE演示地址adminLTE是基于bootstrap3的前端框架,并且将bootstrap3进行修改来适应自身的样式。adminLTE除了可以使用bootstrap3的大多数样式之外,自身也提供了一些非常实用的样式包装,并且在样式演

    2022年7月27日
    4
  • k8s(七)Pod调度[通俗易懂]

    k8s(七)Pod调度[通俗易懂]k8s概述定向调度亲和性调度污点和容忍Pod的调度概述在默认情况下,一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的。但是在实际使用中,这并不满足需求,因为很多情况下,我们想控制某些Pod到达某些节点上,那么应该怎么做?这就要求了解kubernetes对Pod的调度规则,kubernetes提供了四大类调度方式。自动调度:运行在哪个Node节点上完全由Scheduler经过一系列的算法计算得出。定向调度:NodeName、NodeS

    2022年8月11日
    7
  • GIS,Silverlight「建议收藏」

    GIS,Silverlight「建议收藏」
    想学习Silverlight开发GIS,有兴趣的大家一起学习,286448010QQ,zhuqiang4433@hotmail.comMSN

    2022年7月17日
    22
  • 监控录像数据恢复方法步骤详解

    监控录像数据恢复方法步骤详解在人们生活日益改善的今天,社会的和谐安定成为了最为重要的一个问题。一些不法分子为了一己私利,通过不法手段谋取他人的财物。这样的行为对社会对个人都是一种威胁,为了能更好的防治这类社会危害因素,那就需要我们的电子警察——视频监控出马了。视频监控在现在生活中随处可见,道路上有治安监控,各家商铺有防盗监控,随处可见的监控给人们的生命财产安全带来了一份保障。利用安全防范技术进行安全防范首先对犯罪分子

    2022年5月4日
    277
  • 汇编语言(指令简表)

    汇编语言(指令简表)一 汇编指令简表数据传送指令汇编格式指令的操作 movdest source 数据传送 CBW 字节转换成字 CWD 字转换成双字 LAHFFLAGS 低 8 位装入 AH 寄存器 SAHFAH 寄存器内容送到 FLAGS 低 8 位 LDSdest source 设定数据段指针 LESdest source 设定附加段指针 LEAdest sour

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号