import os
import glob
from PIL import Image, ExifTags#Pillowモジュールのインポート
import pandas as pd
import csv
'''
jpgファイル名の書き換えOOx.jpg
'''
path = "./pic/" #これは./ と pic/を合わせたもの。: 同じ階層のpicというフォルダの下
try:
files = glob.glob(path + '*.jpg')#picフォルダの下に進んでほにゃらら.jpgを取得
except:
print('対象のディレクトリがありません')
#enumurateを使うと、返り値としてインデックス番号とファイル名が取れる
for i, f in enumerate(files):#iがインデックス=0,1,2,3; ,fがファイル名。つまり*.jpgが入る)
os.rename(f, os.path.join(path, '{0:03d}'.format(i) + '.jpg'))#インデックスを3桁で0埋め
#os.renameは第一引数=対象のファイル名。第二引数がどんなふうに名前変えるの?という指
#フォルダ内から写真ファイルをとる
#----------------------------------------------------------------------------------------------#
#----------------------------jpgファイル取得しつつexifファイルを取得----------------------------#
file_list = list() #jpgデータそのものを入れる辞書
list_2 ={} #これは上のjpgデータからexifファイルを取り出したものを入れる辞書
i=0
for file in files: #filesという、〇〇jpgの名前が入ったデータを一個ずつfileにいれる
img =Image.open(file) #fileはあくまで名前つまりただの文字列。名前からopenをつかって実際にjpgのデータを取ってくる
file_list.append(img) #file_listオブジェクトのappendメソッドを使ってimg(jpgデータ)を辞書に追加
img.close()#いじったあとの後片付け(そうしないと他の人;他のプログラムで取り出せなくなる)
#この時点でfile_list[./pic//000.jpg, ./pic//001.jpg]というインデックスが出来上がる
file = file.replace('./pic\\', '') # 重要!!!!'./pic//'を削除(空文字列に置換)
list_2[file] = file_list[i]._getexif() #list_2[file] は空のlist_2にfile(000.jpg,001.jpg)というインデックス文字を追加
#つまり一周目の辞書の中身は list_2[000.jpg]=file_list[0]のexifファイルがはいる。file_liset[0]というのは000.jpg自体のexifファイル
#追加した後でexifファイルをそのインデックスと紐づけて格納
i+=1
#この時点で→ list_2[{000.jpg:たくさんのexif},{001.jpg:たくさんのexif}]
'''
dfつくって'filename, date'のカラムつくる
'''
#いろいろいじりたいから、データの塊(リスト)からオブジェクトの塊にする
files_df = pd.DataFrame(list_2)
f = open('out.csv', 'w')
for i in files_df:
list=[i,files_df[i][36868]] #リスト作成→[カラム名(〇〇〇.jpg, 撮影時間)]
writer = csv.writer(f)
writer.writerow(list)
f.close()