2

我想重命名 Windows 目录中的图片。文件名应如下所示

2012-12-01_1 2012-12-01_2 2012-12-02_1 等等

对于每个新日期,新序列必须以 _1 开头。我尝试以我能想到的所有可能的方式比较列表元素,但没有运气。

我的时间来自:

datetime.date.fromtimestamp(os.path.getmtime(os.path.join(target,f)))
where f= each file

我创建的列表如下所示: ['IMG_0288.JPG', 'IMG_0289.JPG', 'IMG_0290.JPG', 'IMG_0291.JPG', 'IMG_0292.JPG', 'IMG_0293.JPG', 'IMG_0294.JPG' , 'IMG_0295.JPG', 'IMG_0296.JPG', 'IMG_0297.JPG', 'IMG_0298.JPG', 'IMG_0299.JPG', 'IMG_0300.JPG', 'IMG_0301.JPG', 'IMG_0302.JPG', ' IMG_0303.JPG'、'IMG_0304.JPG'、'IMG_0305.JPG'、'IMG_0306.JPG'、'IMG_0315.JPG'、'IMG_0323.JPG'、'IMG_0324.JPG'、'IMG_0325.JPG'、'IMG_0326。 JPG'、'IMG_0327.JPG'、'IMG_0328.JPG'、'IMG_0330.JPG'、'IMG_0331.JPG'、'IMG_0333.JPG'、'IMG_0334.JPG'、'IMG_0335.JPG'、'IMG_0336.JPG' , 'IMG_0339.JPG', 'IMG_0340.JPG', 'IMG_0341.JPG'、'IMG_0342.JPG'、'IMG_0343.JPG'、'IMG_0344.JPG']

我尝试将 f 与 dir[0] 进行比较,然后将 dir[0] 与 cut 进行比较,但是它开始跳过所有其他元素。非常感谢您的帮助

4

1 回答 1

1
import itertools as it
import datetime
import os

get_day = lambda x: datetime.date.fromtimestamp(os.path.getmtime(os.path.join(target,f)))

for k, v in it.groupby(sorted(files, key=get_day), key=get_day):
    for i, f in enumerate(v, 1):
        os.rename(os.path.join(target, f),
                  os.path.join(target, '{0:%Y-%m-%d}_{}.JPG'.format(k, i)))
于 2013-01-03T09:52:00.167 回答