运用场景
前些天家人换了手机,在导入一些照片时发现相册APP中的照片排序混乱,好在照片名中有日期信息,就利用pyhton实现批量修改照片的相关时间
代码实现
修改文件时间,首先想到的就是利用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模块修改上述三个时间。
