美文网首页
利用照片名中的日期批量修改照片的修改时间和访问时间(python

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

作者: 闲情益智_ | 来源:发表于2021-02-01 15:45 被阅读0次

    运用场景

    前些天家人换了手机,在导入一些照片时发现相册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

          本文链接:https://www.haomeiwen.com/subject/wnajtltx.html