網(wǎng)站首頁 編程語言 正文
引言
手機中拍攝照的照片和視頻快爆了,想轉(zhuǎn)移到PC端,并按時間建立文件夾存儲到電腦中,本文主要介紹如何通過python獲取手機拍攝圖片的時間信息并存儲。
1. 獲取圖片拍攝時間
首先需要安裝exifread庫。通過EXIF(Exchangeable image file format: 可交換圖像文件格式) 獲取這些信息。
獲取圖片時間信息:
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
我們將文件重命名,方便后續(xù)管理。
2. 獲取視頻拍攝時間
獲取視頻拍攝時間信息:
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)
同樣我們將文件 重命名,方便后續(xù)管理。
3. 根據(jù)圖片時間建立文件夾
通過以上操作,照片和視頻文件我們都以時間格式進(jìn)行命名。接下來我們根據(jù)時間建立文件夾整理。
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)
完整代碼
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)
原文鏈接:https://cloud.tencent.com/developer/article/2048021
相關(guān)推薦
- 2022-08-14 Selenium定位瀏覽器彈窗方法實例總結(jié)_python
- 2022-05-12 van-checkbox 全選,解決單個點擊后會取消全部的問題
- 2022-05-06 mac brew 啟動服務(wù)時報錯“Bootstrap failed: 5: Input/output
- 2021-12-25 常用時間處理方法:時間戳和格式化時間之間轉(zhuǎn)換;時間比大小
- 2022-04-04 Python數(shù)據(jù)處理-導(dǎo)入導(dǎo)出excel數(shù)據(jù)_python
- 2022-12-26 C++逆向分析移除鏈表元素實現(xiàn)方法詳解_C 語言
- 2022-05-28 利用For循環(huán)遍歷Python字典的三種方法實例_python
- 2022-08-23 C++?primer超詳細(xì)講解泛型算法_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支