Python批量重命名文件示例

   Python批量重命名文件方法很简单我们会利用listdir与rename 再加上目录遍历即可实现文件重命令了,下面整理了一些方法。

  用到了os的两个接口:

  1、列出文件夹中的所有文件(也包含目录)

  os.listdir(path)

  Return a list containing the names of the entries in the directory given by path. The list is in arbitrary order. It does not include the special entries '.' and '..' even if they are present in the directory.

  Availability: Unix, Windows.

  Changed in version 2.3: On Windows NT/2k/XP and Unix, if path is a Unicode object, the result will be a list of Unicode objects. Undecodable filenames will still be returned as string objects

  2、对文件进行重命名

  os.rename(src, dst)

  Rename the file or directory src to dst. If dst is a directory, OSError will be raised. On Unix, if dst exists and is a file, it will be replaced silently if the user has permission. The operation may fail on some Unix flavors if src and dst are on different filesystems. If successful, the renaming will be an atomic operation (this is a POSIX requirement). On Windows, if dst already exists, OSError will be raised even if it is a file; there may be no way to implement an atomic rename when dst names an existing file.

  Availability: Unix, Windows

 代码如下  
import os 
  
dirpath="D:/workbench/crazyant.net/myfiles"
for fname in os.listdir(dirpath): 
    newfname=fname[3:] 
    newfpath="%s/%s"%(dirpath,newfname) 
    oldfpath="%s/%s"%(dirpath,fname) 
      
    os.rename(oldfpath, newfpath)

  其实就是用os.listdir读取里面所有的文件,然后用os.rename进行文件重命名即可实现

  3、对于上面的办法我还找到一些方法

 代码如下  

# coding=utf-8 
  
import os 
import re 
  
path = "D:temp"
pattern = re.compile('d{3}') 
  
for file in os.listdir(path): 
    if os.path.isfile(os.path.join(path, file)): 
        match = pattern.search(file) 
        assert match 
        name = match.group() + '.mp3'
        #print file, name 
        os.rename(os.path.join(path, file), os.path.join(path, name))

  要注意match和search的区别:match是从头开始匹配,search就是贪心。其实也没这么复杂有一个叫Bulk Rename Utility的玩意儿就是拿来重命名用的。

  再补充一个

  输入指定目录,程序处理该目录及其包含有big.jpg文件的子目录,

  将名称类似’big(5).jpg’的文件改名为’big_5.jpg’,

  即 big(N).jpg ==> big_N.jpg

  代码如下:

  # coding: cp936

  """

  文件重命名

  输入指定目录,程序处理该目录及其包含有big.jpg文件的子目录,

  将名称类似'big(5).jpg'的文件改名为'big_5.jpg',

  即 big(N).jpg ==> big_N.jpg

  @author chenwei

  @date 2010-12-26

  """

  import glob

  import os

  def main():

  print '重命名任务开始'

  base_dir = raw_input('请输入待处理目录:')

  # 处理顶级目录

  rename_dir(base_dir)

  # 查找包含有big.jpg文件的子目录

  pattern = base_dir + r'*big.jpg'

  file_list = glob.glob(pattern)

  # 对各目录分别进行处理

  for file in file_list:

  i = file.rindex('')

  dir = file[:i]

  rename_dir(dir)

  print '重命名任务完成'

  raw_input('输入任意内容结束')

  def rename_dir(dir):

  # 根据模式查找待改名的文件

  pattern = dir + r'big(*).jpg'

  file_list = glob.glob(pattern)

  # 分别处理各文件

  for file in file_list:

  rename_file(file)

  def rename_file(fname):

  # 取得文件名,去除路径及扩展名

  i = fname.rindex('')

  j = fname.rindex('.')

  basename = fname[i+1:j]

  # 获取文件编号

  k = basename.rindex('(')

  l = basename.rindex(')')

  seq = basename[k+1:l]

  # 新文件名

  new_fname = fname.replace(fname[i+1:j], 'big_'+seq)

  # 重命名

  try:

  os.rename(fname, new_fname)

  print '重命名 ' + fname + ' to ' + new_fname + ' 成功'

  except:

  print '重命名 ' + fname + ' to ' + new_fname + ' 失败'

  if __name__ == '__main__':

  main()

时间: 2024-10-29 14:07:22

Python批量重命名文件示例的相关文章

Python批量重命名同一文件夹下文件的方法

  本文实例讲述了Python批量重命名同一文件夹下文件的方法.分享给大家供大家参考.具体分析如下: 朋友发了一个文件夹过来,里面的图片都以 .tmp 为后缀. 手工修改的话工作量太大.故写了一个 Python 脚本进行批量重命名. 对 Python 的标准库不熟,只能边查资料,或者 help() 边写代码. 三行代码就可以解决这一问题. 不过没有捕获异常.不能迭代同一目录下的所有文件. 代码如下: ? 1 2 3 4 import os for file in os.listdir(".&qu

win7系统下批量重命名文件的方法

  在win7下我们对于同类文件来说,如果想要以数字编号的形式命名文件的话,是无需借助第三方软件即可完成修改的,不过很多不知道如何操作,故此小编为大家带来了Win7如何同时重命名多个文件的方法,需要的用户赶快学习下吧! win7系统下批量重命名文件的方法 1.在保存文件的时候可以采用系统自动分配名字的方法,即保存的时候系统显示的什么名字,就让它默认为什么名字,这样的名字也不会重名,保存起来相当的快. 2.选中文件夹中所有需要重命名的文件,直接按组合键ctrl+a就行,然后按F2,接下来输入希望设

Win7如何批量重命名文件?

  大家在用电脑时,经常会遇到需要批量重命名文件的问题.如果文件不多还好办,不然挨个重命名是很麻烦的事.所以,掌握重命名小技巧还是非常有必要的.下面小编就向大家介绍一下这个简单实用的方法,适用于Win7/Win8.1/Win10系统. 具体步骤如下: 1.全选你想重命名的文件,如下图-- 2.在选中状态的一个文件上点右键,选择重命名,如下图-- 3.一个文件改好新名称后,其他文件依次被序号标记,如下图-- 方法很简单,只不过修改的时候要注意文件排列顺序,以及被修改的"样本文件"排序位置

关于批量重命名文件

不久前,我们软件工程系举行了全系大会.我在大会上做了简短的报告,主题是"学以致用.动手实践".报告期间我说了一个亲身经历:以前校园内U盘病毒肆虐,病毒会把U盘里所有的文本文件加上系统属性和隐藏属性,并添加".tmp"扩展名(例如原文件名为"a.txt",病毒修改为"a.txt.tmp"),然后生成一个和原文件同名的病毒文件.我不幸中招,于是用我所学的知识写了一个小程序,几秒钟就解决了. 原以为它就像插播广告一样随听随忘,不料言

Shell脚本批量重命名文件后缀的3种实现_linux shell

今天突然间想起昨天有个问题还没动手实践下,就是利用shell批量修改文件的后缀,现在动手实践一下. 需求:家目录下有一些sql文件,想批量重命名成txt的 1.find + xargs +sed 复制代码 代码如下: find /root -name '*.sql' |xargs -i echo {}   {} |sed 's/sql/txt/2′  |xargs mv find /root/ -name '*.sql' |sed -e 's/\(.*\).sql$/mv & \1.txt/e'

用python实现批量重命名文件的代码_python

下面是最终代码 (windows下实现的) 复制代码 代码如下: # -*- coding: cp936 -*- import os path = 'D:\\图片\\' for file in os.listdir(path): if os.path.isfile(os.path.join(path,file))==True: if file.find('.')<0: newname=file+'rsfdjndk.jpg' os.rename(os.path.join(path,file),os

在Linux中对文件进行批量重命名文件的方法

  在Linux中,当你想要改变一个文件名,使用mv命令就好了.然而mv不能使用通配符重命名多个文件.可以用sed.awk或者与xargs结合使用来处理多个文件的情况.然而,这些命令行即繁琐又不友好,并且如果不小心的话还很容易出错.你不会想要撤销1000个文件的错误名吧! 当你想要重命名多个文件的时候,rename 工具或许是最简单.最安全和最强大的命令行工具.这个rename命令实际上是一个Perl脚本,它预安装在所有的现在Linux发行版上. 下面是重命名命令的基本语法. 代码如下: ren

python对指定目录下文件进行批量重命名的方法_python

本文实例讲述了python对指定目录下文件进行批量重命名的方法.分享给大家供大家参考.具体如下: 这段python代码可对c:\temp目录下的所有文件名为"scroll_1"文件替换为"scroll_00" import os path = 'c:\\temp' for file in os.listdir(path): if os.path.isfile(os.path.join(path,file))==True: newname = file.replace

文件批量重命名的另类应用小技巧

工作生活中,我们不时需要对大量文件进行重新命名,由于Windows 本身提供的批量重命名功能太弱,往往达不到要求,于是我们便到处寻找各式各样的批量重命名工具--其实,你电脑里很可能已经有了可以批量重命名的强大工具. ACDSee不仅可以看图片 还可以批量重命名 很多人电脑里都安装了ACDSee,殊不知,它也具有批量重命名文件的功能.不同的ACDSee版本会有少许差别,这里以ACDSee 5为例. 首先启动ACDSee,切换到"浏览"方式,打开图片所在的文件夹,在ACDSee的管理器窗口