利用照片名中的日期批量修改照片的修改时间和访问时间(python实现)

运用场景

前些天家人换了手机,在导入一些照片时发现相册APP中的照片排序混乱,好在照片名中有日期信息,就利用pyhton实现批量修改照片的相关时间


屏幕截图 2021-02-01 153146.png

代码实现

修改文件时间,首先想到的就是利用python中的time模块,代码如下

import os,sys,time,re

'''
利用utime模块,简单好用,但只能改 修改时间和访问时间,不能改创建时间
'''
# 将文件名中的空格替换为‘-’
def space2bar(dirname, basename):
    newname = basename.replace(' ', '-')
    os.rename(os.path.join(dirname, basename), os.path.join(dirname, newname))
    return newname

# 修改日期
def modify_date(dirname, basename):
    """获取文件名中的时间格式,用于修改时间 """
    # 文件名正则表达式
    expression = r"\d{4}-\d{2}-\d{2}-\d{6}"

    if re.match(expression, basename):
        temp_str = basename.split('-')
        # 获取temp_str[4]的前4位作为时分
        hour_minute = temp_str[3][0:4]
        print(dirname+basename+'>>Modify_Date>>' +
              temp_str[0]+temp_str[1]+temp_str[2]+hour_minute)

        temp_time = time.strptime(
            temp_str[0]+temp_str[1]+temp_str[2]+hour_minute, '%Y%m%d%H%M')

        # 将strptime,返回用秒数来表示时间的浮点数
        mtime = time.mktime(temp_time)

        # mktime,修改文件的修改和访问时间
        os.utime(dirname+basename, (mtime, mtime))

        print("修改成功")
    else:
        print("文件名格式不符合")

if __name__ == "__main__":
    file_path = r'D:\ProgramData\Python\Modify_date\2015-04-07 142409.jpg'
    basename = os.path.basename(file_path)
    dirname = os.path.dirname(file_path)+'\\'

    if len(basename.split(' ')) > 1:
        basename = space2bar(dirname, basename)

    modify_date(dirname, basename)

问题

利用time模块中的utime只能修改文件中的修改时间和访问时间,不能修改创建时间。下节继续利用win32file模块修改上述三个时间。

你可能感兴趣的:(利用照片名中的日期批量修改照片的修改时间和访问时间(python实现))