python - 在python中按顺序重命名文件

标签 python directory file-rename

嗨,我正在尝试重命名目录中的文件(test.jpeg、test1.jpeg、test2.jpeg 等...)(People-000、People-001、People-002 等...)

但我还没有找到在线任何地方执行此操作的好方法。 我对 python 有点陌生,但如果我弄清楚了这一点,它将非常有用。

最佳答案

如果您不介意新旧名称之间的对应关系:

import os
_src = "/path/to/directory/"
_ext = ".jpeg"
for i,filename in enumerate(os.listdir(_src)):
    if filename.endswith(_ext):
        os.rename(filename, _src+'People-' + str(i).zfill(3)+_ext)

但是,如果新旧文件名的结尾号必须对应,则可以使用正则表达式:

import re
import os
_src = "/path/to/directory/"
_ext = ".jpeg"

endsWithNumber = re.compile(r'(\d+)'+(re.escape(_ext))+'$')
for filename in os.listdir(_src):
    m = endsWithNumber.search(filename)
    if m:
        os.rename(filename, _src+'People-' + str(m.group(1)).zfill(3)+_ext)
    else:
        os.rename(filename, _src+'People-' + str(0).zfill(3)+_ext)

使用正则表达式代替字符串索引的优点是与文件名长度无关。

关于python - 在python中按顺序重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45286364/

相关文章:

Perl Archive::Zip 创建不必要的文件夹

Linux 在目录之前重命名文件

Perl:获取区分大小写的文件名

Python 相对导入和包

python - 精确拆分句子

sharepoint - 按修改日期从 Sharepoint 复制文件夹

c++ - SHFileOperation 不会 move 文件夹的所有内容

python - 在多个条件下匹配 2 个 dfs

python - 当 Cisco 路由器的 ssh 命令产生大量输出时,subprocess.CalledProcessError 和 ssh 连接断开

linux - Bash根据另一个文件中的行重命名多个文件