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_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)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python
, 文件名
批量修改
python批量修改文件名、python批量读取文件名、python批量改文件名、python批量更改文件名、c 实现批量修改文件名,以便于您获取更多的相关知识。

时间: 2024-11-17 20:47:58

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

Python 批量修改文件名的3种实现方法

例子一  代码如下 复制代码 python 批量修改文件名代码 view plaincopy to clipboardprint? #!/usr/bin/env python  #coding=utf-8  import os,os.path  import shutil,string  dir = C:\test for i in os.listdir(dir):      newfile = i.replace(.,_)      oldfullfile = dir \ i      new

Python批量修改文件后缀的方法_python

近期下载了很多各种教程, 但是不幸的是后缀名都是 ".mp4", 而本人喜欢 ".rmvb" 后缀,由于有轻微洁癖, 受不了后面的 ".mp4" 缀, 但是手动修改又太过繁琐, 所以用近期刚学的 Python 来偷懒吧 !   : ) 如图为程序运行前的文件名 我们要做的呢, 就是在当前目录下,新建一个python文件, 如上图 demo2.py 然后用编辑器打开敲入如下代码: 复制代码 代码如下: import os # 列出当前目录下所有的文

linux中批量修改文件名的脚本代码_linux shell

使用 rename 命令 ======================== NAME rename - Rename files SYNOPSIS rename from to file... ======================== 复制代码 代码如下: #! /bin/sh INIFILE="./dirlist.ini" CURPATH=$(pwd) for SERVERPATH in $(cut -d: -f1 $INIFILE) do cd $SERVERPATH cd

Java批量修改文件名的实例代码_java

复制代码 代码如下: import java.io.*; import java.util.*;public class Test {     public static void main(String[] args) throws IOException {        BufferedReader br = new BufferedReader(new FileReader("output1.txt"));        List<String> newName =

利用Python批量生成任意尺寸的图片_python

实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- import threading from PIL import Image image_size = range(1, 1001) def start(): for size in image_size: t = threading.Thread(target=create_image, args=(s

批量修改文件名的脚本bat\python\shell

经常会遇到批量修改文件名的时候,比如下载了一批mp3文件.这些文件名都带有统一的前缀,比如"儿歌-***.mp3".在听音乐时有时只能回滚前几个文字,这时就可以使用该脚本批量去掉前缀. 一.BAT脚本 二.python脚本 三.shell脚本

如何批量修改文件名?

  通常我们使用手机或者相机拍摄了一堆照片拷贝到电脑之后,照片的命名通常都是随机混乱的,如果要规范文件命名,你是不是会去一个一个去修改文件名呢?其实完全不需要这么麻烦,今天小编就来教大家一个批量快速修改照片文件名和添加前缀方法,方法技巧如下. 如何批量修改文件名? 一.首先将所有照片文件放置在一个文件夹当中,然后同时按住键盘上的 Ctrl + A 组合快捷键选中所有照片文件,全部选中后,再按 F2 键进行批量重命名,并输入新名称,比如"极客青年"如下图. Ps.笔记本用户,如果遇到按F

电脑如何批量修改文件名?

  通常我们使用手机或者相机拍摄了一堆照片拷贝到电脑之后,照片的命名通常都是随机混乱的,如果要规范文件命名,你是不是会去一个一个去修改文件名呢?其实完全不需要这么麻烦,今天电脑百事小编就来教大家一个批量快速修改照片文件名和添加前缀方法,方法技巧如下. 如何批量修改文件名? 一.首先将所有照片文件放置在一个文件夹当中,然后同时按住键盘上的 Ctrl + A 组合快捷键选中所有照片文件,全部选中后,再按 F2 键进行批量重命名,并输入新名称,比如"极客青年"如下图. Ps.笔记本用户,如果

批量修改文件名

问题描述 比如一个文件夹下面有个多个文件名比如a_list-1.txta_list-2.txta_list-3.txt这样的怎么批量修改文件名! 解决方案 解决方案二: 解决方案三: 解决方案四:用程序的话,一个一个修改就可以了吧.System.IO.File.Move(@"C:From.txt",@"C:TO.txt");解决方案五:在文件目录下新建一个txt文件,改名为X.bat,拷贝下面代码,然后运行."a_!a!.txt"新文件名样式@e