Python 3.7:在目录中批量重命名编号的文件,同时保留其顺序

时间:2019-04-03 16:06:14

标签: python-3.x batch-rename

我是Python的新手,并且直到最近才开始尝试将其用于数据分析。我在目录中有一个按顺序获取的图像文件列表,它们的名称如下:

IMG_E5.1.tif
IMG_E5.2.tif
IMG_E5.3.tif
...
...
IMG_E5.107.tif

我想用一个下划线和一个四位数的整数替换点及其后面的数字,同时保留文件的初始编号,如下所示:

IMG_E5_0001.tif
IMG_E5_0002.tif
IMG_E5_0003.tif
...
...
IMG_E5_0107.tif

您能建议我如何完成此工作吗?或者,如果我已经不知道答案了,请联系我吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

我设法找到了一种适用于此的方法

import os
import os.path as path
from glob import glob

# Get current working directory
file_path = os.getcwd()

file_list = []
for i in range(1, 500):
    # Generate file name (with wildcards) to search for
    file_name = path.abspath(file_path + "/IMG*" + "." + str(i) + ".tif")
    # Search for files
    file = glob(file_name)
    # If found, append to list
    if len(file) > 1:
        file_list.append(file[0])
    elif len(file) == 1:
        file_list.append(file[0])

for file in file_list:
    # Use the "split" function to split the string at the periods
    file_name, file_num, file_ext = file.split(".")
    file_new = path.abspath(file_name + "_"
                           + str(file_num).zfill(4)
                           + "." + file_ext) 
    os.rename(file, file_new)

我对编码还是比较缺乏经验,因此,如果有解决此问题的更直接有效的方法,请告诉我。谢谢。