docomoのガラケーで撮った画像、回転させたのはいいが撮影日がわからない。
ファイル名は連番でメモリがいっぱいになってファイルを削除すると、
困ったことにその空いた番号を探して追加していくので時系列がバラバラになってしまう。
ファイルを閲覧する時も。
これをなんとかしようとする。ガラケーを使っていて、ubuntuでこんなことをしようとするのは、
世界でもただ一人かもしれず、さらにカスタマイズしていてなんの役にも立たなそうな案件。
いろいろとはまったのでその情報だけでも
①identify -verbose ./filenameが追加情報を取得するコマンド
②python3でコマンド実行の結果を利用する場合、python2.7とは違ってsubprocessを利用する。
③コマンドは区切りごとに配列にしないといけない。result=subprocess.check_output(commandText.split(" "))
④結果はstrではなくbytes 改行は\n
⑤exif:UserComment:に日付情報が入っているが一般的ではなさそう
ファイル名は連番でメモリがいっぱいになってファイルを削除すると、
困ったことにその空いた番号を探して追加していくので時系列がバラバラになってしまう。
ファイルを閲覧する時も。
これをなんとかしようとする。ガラケーを使っていて、ubuntuでこんなことをしようとするのは、
世界でもただ一人かもしれず、さらにカスタマイズしていてなんの役にも立たなそうな案件。
いろいろとはまったのでその情報だけでも
①identify -verbose ./filenameが追加情報を取得するコマンド
②python3でコマンド実行の結果を利用する場合、python2.7とは違ってsubprocessを利用する。
③コマンドは区切りごとに配列にしないといけない。result=subprocess.check_output(commandText.split(" "))
④結果はstrではなくbytes 改行は\n
⑤exif:UserComment:に日付情報が入っているが一般的ではなさそう
import os import subprocess def rename(filename): #JPGファイルのexif情報を取得 baseComm="identify -verbose ./filename" baseComm=baseComm.replace("filename",filename) #subprocess.check_outputのコマンドはスペースの区切りで配列化にしないといけない result=subprocess.check_output(baseComm.split(" ")) #実行結果は for r in str(result).split("\\n"): #UserCommentに撮影日時の情報がカンマ区切りのchrコードとして入っているので文字列化 if -1<r.find("exif:UserComment:"): adddate="" for n in r.replace("exif:UserComment:","").replace(" ","").split(","): if 0<int(n): adddate+=chr(int(n)) renameComm="mv ./filename ./adddate_filename" renameComm=renameComm.replace("filename",filename).replace("adddate",adddate) print(renameComm) os.system(renameComm) #該当するファイル名を取得する #絶対path取得(利用なし) path=os.path.dirname(os.path.abspath(__file__)) fileNames = os.listdir("./") for f in fileNames: #renameするファイル名には"270_"が先頭にある if f.find("270_")==0: rename(f)