为给定模式重命名文件

Renaming of files for a given pattern

我需要帮助。 有一个文件夹"C:\TEMP"在这个文件夹里是格式化文件"IN_ + 7123456789.amr" 有必要为给定的模式重命名文件。 "IN_ NAME _ DATE-CREATE _ Phone number.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

抱歉,您的 none 个示例与您的问题一致,我仍然不明白您的 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 模式并被忽略。