本文实例为大家分享了python利用文件时间批量重命名照片和视频的具体代码,供大家参考,具体内容如下
问题描述
承接上节的问题,在安卓和苹果间互导照片和视频还容易出现文件名混乱的问题,如下图所示。
代码实现
为保证文件名的准确性,这里主要提取照片的拍摄时间和视频的修改时间用于重命名,这两个时间一般是其原始时间,实现代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
import os import re import time import exifread def get_file_date(filepath, format ): ''' 获取文件的时间戳,这里主要返回视频的时间,原时间一般为修改时间 st_atime (访问时间), st_mtime (修改时间), st_ctime(创建时间) ''' statinfo = os.stat(filepath) temp_time = time.localtime(statinfo.st_mtime) return str (time.strftime( format , temp_time)) def get_exif_date(filepath): # 获取照片的拍摄日期,利用exifread模块 FIELD = 'EXIF DateTimeOriginal' fd = open (filepath, 'rb' ) tags = exifread.process_file(fd) fd.close() if FIELD in tags: temp_time = str (tags[FIELD]) new_time = temp_time.replace( ':' ,' ').replace(' ',' _') return new_time def get_filetype(basename): ''' 利用正则表达式判断文件后缀,照片返回0,视频返回1,其他返回2 ''' img_reg = r '(\.JPG|\.jpg|\.bmp|\.png)' vedio_reg = r '(\.mp4|\.MP4|\.MOV)' if re.search(img_reg,basename): #匹配照片 return 0 elif re.search(vedio_reg,basename): #匹配视频 return 1 else : return 2 if __name__ = = "__main__" : dirname = r 'D:\ProgramData\Python' os.chdir(dirname) # 切换至当前目录 basenames = os.listdir(dirname) format = '%Y%m%d_%H%M%S' # 时间格式 for basename in basenames: filepath = dirname + '\\' + basename num = get_filetype(basename) if num = = 0 : str_time = get_exif_date(filepath) #处理照片 newname = str_time + os.path.splitext(basename)[ 1 ] os.rename(basename,newname) print (basename + '---照片修改成功!' ) elif num = = 1 : str_time = str (get_file_date(filepath, format )) #处理视频 newname = str_time + os.path.splitext(basename)[ 1 ] os.rename(basename,newname) print (basename + '---视频修改成功!' ) else : print (basename + "---文件格式不正确!" ) |
结论
最后修改结果如下。
以上就是本文的全部内容,希望对大家的学习有所帮助.