重命名给定模式的文件

时间:2015-07-21 06:35:04

标签: python file rename file-rename

我需要帮助。 有一个文件夹" C:\ TEMP"在此文件夹中是格式化文件" IN_ + 7123456789.amr" 有必要为给定模式重命名文件。 " IN_ NAME _ DATE-CREATE _电话号码.amr" 相应地,如果一个名为" OUT_ + 7123456789.amr"结果格式" OUT_ NAME_DATE-CREATE_Phone number.amr"

问题是如何指定在os.rename之前检查过的文件名,并根据文件名使用模板

import os

path = "C:/TEMP"


for i, filename in enumerate(os.listdir(path)):
    os.chdir(path)
    os.rename(filename, 'name'+str(i) +'.txt')
    i = i+1

1 个答案:

答案 0 :(得分:0)

很抱歉,但您的问题中没有一个示例符合您的问题,我仍然不了解您的C:\temp包含的内容......

好吧,假设它看起来像:

>>> os.listdir(path)
['IN_ + 7123456789.amr', 'OUT_ + 7123456789.amr']

示例:

import datetime
import re
import os

os.chdir(path)
for filename in os.listdir(path):
    match = re.match(r'(IN|OUT)_ \+ (\d+).amr', filename)
    if match:
        file_date = datetime.datetime.fromtimestamp(os.stat(filename).st_mtime)
        destination = '%s_%s_%s_Phone number.amr' % (
            match.group(1), # either IN or OUT
            match.group(2),
            file_date.strftime('%Y%m%d%H%M%S'), # adjust the format at your convenience
        )

        os.rename(filename, destination)

将产生:

  • IN_7123456789_20150721094227_Phone number.amr
  • OUT_7123456789_20150721094227_Phone number.amr

其他文件不会与re.match模式匹配,会被忽略。