用Python重命名多个文件

5

我想知道使用Python中的re模块重命名多个文件的最简单方法,如果可能的话。

在我的目录中,有25个文件,所有文件名的格式都是“一个唯一的名称,后跟20个相同的字符.mkv”

我想要删除所有20个字符。

如果可能的话,如何使用Python实现这一点 :)

5个回答

6

获取新名称的方法:

>>> re.sub(r'.{20}(.mkv)', r'\1', 'unique12345678901234567890.mkv')
'unique.mkv'

或者不用正则表达式:

>>> 'unique12345678901234567890.mkv'[:-24] + '.mkv'
'unique.mkv'

要重命名文件,请使用os.rename(old, new)http://docs.python.org/library/os.html#os.rename 要获取要重命名的文件列表,请使用glob.glob('*.mkv')http://docs.python.org/library/glob.html#glob.glob 将它们组合起来,我们得到:
for filename in glob.glob('*.mkv'):
    if len(filename) > 24:
        os.rename(filename, filename[:-24] + '.mkv'

0
使用 glob 查找文件名,切片字符串,并使用 os.rename() 重命名它们。

0

由于您要从字符串中的特定位置剪切出一定数量的字符,因此使用re模块有些过度。您可以将新文件名准备为:

new_name = old_name.rsplit('.', 1)[0][:-20] + '.mkv'

要查找文件,请查看os.listdir(或者,如果您想递归地查看目录,则为os.walk),要重命名它们,请参见os.rename
如果目录中有其他不想重命名的.mkv文件,则re模块将非常有用,因此您需要进行更仔细的检查以识别“目标”文件名。

0

类似于:

>>> import os
>>> doIt = False
>>> for filename in ( x for x in os.listdir('.') if x.endswith('.mvk')):
...     newname = filename[:-24] + filename[-4:]
...     if doIt:
...         os.rename(filename,newname)
...         print "Renaming {0} to {1}".format(filename,newname)
...     else:
...         print "Would rename {0} to {1}".format(filename,newname)
...

在操作文件时,始终要进行干运行。将doIt更改为True,以实际移动文件。


-1

你需要使用globos.rename。其余的就留给你自己去解决吧!

是的,在Python中完全可以轻松实现这个功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接