【问题标题】:Renaming of files for a given pattern为给定模式重命名文件
【发布时间】:2015-10-10 11:40:20
【问题描述】:

我需要帮助。 此文件夹中有一个文件夹“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

【问题讨论】:

  • "如何指定文件名已被检查"检查什么?也许如果你展示一些我可能理解的代码?
  • 检查文件名中是否存在单词,例如单词 of in / out / Phone
  • Дима,使用您在评论中指定的代码更新问题
  • 你检查glob模块了吗?
  • @bufh 这个模块没有在文件夹中进行简单的搜索?

标签: python file rename file-rename


【解决方案1】:

抱歉,您的问题中没有一个示例与您的问题一致,我仍然不明白您的 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_电话号码.amr
  • OUT_7123456789_20150721094227_电话号码.amr

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

【讨论】:

    猜你喜欢
    • 2014-05-27
    • 2017-09-19
    • 2020-04-09
    • 2021-04-13
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多