引言
手机中拍摄照的照片和视频快爆了,想转移到PC端,并按时间建立文件夹存储到电脑中,本文主要介绍如何通过python获取手机拍摄图片的时间信息并存储。
1. 获取图片拍摄时间
首先需要安装exifread库。通过EXIF(Exchangeable image file format: 可交换图像文件格式) 获取这些信息。
获取图片时间信息:
1
2
3
4
5
6
7
8
|
import exifread with open (file_path, 'rb' ) as file_data: tags = exifread.process_file(file_data) tag_date = 'EXIF DateTimeOriginal' if tag_date in tags: file_rename = str (tags[tag_date]).replace( ':' ,' ').replace(' ', ' _') + os.path.splitext(filename)[ 1 ] new_path = os.path.join(root_dir, file_rename) os.rename(file_path, new_path) |
通过以上代码即可获取拍摄时间,得到时间格式:2022:03:11 11:30:06
我们将文件重命名,方便后续管理。
2. 获取视频拍摄时间
获取视频拍摄时间信息:
1
2
3
4
5
6
7
|
format = '%Y%m%d_%H%M%S' file_path = os.path.join(root_dir, filename) statinfo = os.stat(file_path) temp_time = time.localtime(statinfo.st_mtime) file_rename = str (time.strftime( format , temp_time)) + os.path.splitext(filename)[ 1 ] new_path = os.path.join(root_dir, file_rename) os.rename(file_path, new_path) |
同样我们将文件 重命名,方便后续管理。
3. 根据图片时间建立文件夹
通过以上操作,照片和视频文件我们都以时间格式进行命名。接下来我们根据时间建立文件夹整理。
1
2
3
4
5
6
7
|
time_info = os.path.splitext(filename)[ 0 ].split( "_" )[ 0 ] dst_dir = save_dir + time_info if not os.path.exists(dst_dir): os.mkdir(dst_dir) src_path = os.path.join(root_dir, filename) save_path = os.path.join(dst_dir, filename) shutil.move(src_path, save_path) |
完整代码
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
|
import os import re import time import shutil import exifread def rename_pic(root_dir, filename): file_path = os.path.join(root_dir, filename) try : with open (file_path, 'rb' ) as file_data: tags = exifread.process_file(file_data) tag_date = 'EXIF DateTimeOriginal' if tag_date in tags: file_rename = str (tags[tag_date]).replace( ':' , ' ').replace(' ', ' _') + os.path.splitext(filename)[ 1 ] new_path = os.path.join(root_dir, file_rename) print (file_path,new_path) os.rename(file_path, new_path) else : print ( 'No {} found' . format (tag_date), ' in: ' , file_path) except Exception as e: print ( "error " , e) def rename_video(root_dir, filename): format = '%Y%m%d_%H%M%S' file_path = os.path.join(root_dir, filename) statinfo = os.stat(file_path) temp_time = time.localtime(statinfo.st_mtime) file_rename = str (time.strftime( format , temp_time)) + os.path.splitext(filename)[ 1 ] new_path = os.path.join(root_dir, file_rename) os.rename(file_path, new_path) def rename(root_dir): img_reg = r '(\.JPG|\.PNG|\.jpg|\.png)' video_reg = r '(\.mp4|\.MP4|\.MOV)' for filename in os.listdir(root_dir): file_path = os.path.join(root_dir, filename) if os.path.isfile(file_path): if re.search(img_reg, filename): rename_pic(root_dir, filename) elif re.search(video_reg, filename): rename_video(root_dir, filename) def save_files(root_dir, save_dir): for filename in os.listdir(root_dir): try : time_info = os.path.splitext(filename)[ 0 ].split( "_" )[ 0 ] dst_dir = save_dir + time_info if not os.path.exists(dst_dir): os.mkdir(dst_dir) src_path = os.path.join(root_dir, filename) save_path = os.path.join(dst_dir, filename) print (src_path, save_path) shutil.move(src_path, save_path) except Exception as e: print ( "error " , e) if __name__ = = '__main__' : root_dir = "/Users/xxx/pics" save_dir = "/Users/xxx/Downloads/" rename(root_dir) save_files(root_dir, save_dir) |
以上就是python解析照片拍摄时间进行图片整理的详细内容,更多关于python解析拍摄时间的资料请关注服务器之家其它相关文章!
原文链接:https://cloud.tencent.com/developer/article/2048021