pythonを使用して、日付に基づいて写真やビデオをフォルダに分解する方法





誰もが写真やビデオの瓦礫に精通しており、デバイスからコピーした後も何年も残ります。



これは、iphone、ipadに特に当てはまります。これらは、直接(itunesなしで)コピーすると

、メディアコンテンツのデポジットを作成します。どうすれば何年も何ヶ月もかけてそれをすべて整理できますか?



はい、同期があります。はい、すべてを一度に並べ替えることができます。しかし...



誰かが何にも触れないことを好みます。埋め立て地の統一が観察されるので、誰かが少なくとも何年にもわたって蓄積されたすべてを分解しようと臆病な試みをします。



間違いなく、指揮者を通して、表形式のビューを使用して、これらすべてを手動で分散させることは難しくありませんが、古い写真を見始めると、プロセスが遅れます。



したがって、フォルダ内のファイルを月単位で年ごとに分解する簡単なプログラムを作成します











。プログラム自体が日付を決定し、ファイルの変更日を「確認」し







ます。ファイルの作成日ではなく、変更日を使用するのはなぜですか。

原則として、彼女は自分の名前よりもファイルの日付をより正確に示します。



開始時のモジュールのインポート:

import os,time
import datetime
import shutil


パス(windows)をファイルのあるフォルダーにコピーすることをお勧めします。



p=input('    . : E:/\1')
os.chdir(p)


01から12までの月でフォルダを作成する機能を紹介しましょう(f '行がないのでご容赦ください):



#    01  12
def d():
    for x in range (1,13):
        if x>9:
            if not os.path.exists(str(x)):
                os.makedirs(str(x))
        else:
            if not os.path.exists('0'+str(x)):
                os.makedirs('0'+str(x))


次の関数は、写真/ビデオファイルから取得した日付を処理します。



def mod_date(file):
    t = os.path.getmtime(file)
    return datetime.datetime.fromtimestamp(t)


これで、フォルダを

調べて、プログラムはすべてのファイル拡張子を収集すると同時に、ファイルの年を判別します。毎年、独自のフォルダが作成され、その中に

月のあるフォルダが作成されます。



a=[] #['AAE', 'MOV', 'JPG', 'PNG']
for root, dirs, files in os.walk(p):    
    for file in files:
        if file[-3:] not in a:
            a.append(file[-3:])
        if file[-3:] in a:
            year=str(mod_date(file))[:10][:4]            
            if not os.path.exists(year):
                os.makedirs(year)
            os.chdir(p+'/'+year)            
            d()
            os.chdir(p)


*したがって、jpeg、mov、mkvだけでなく、完全に異なる(任意の)拡張子を持つフォルダーにファイルを分散させることができます。



フォトダンプのあるフォルダをもう一度調べて、対応する新しく作成されたフォルダに写真を転送しましょう。



try:
    for root, dirs, files in os.walk(p):    
        for file in files:
                if file[-3:] in a:
                    year=str(mod_date(file))[:10][:4]                    
                    month=str(mod_date(file))[:10][5:7] #  
                    shutil.move(file, year+'/'+month+'/'+file) #   
except EnvironmentError:
    (' ')


プログラムはエラーで終了するため、ループ内の最後のファイルが見つからず、正しい実行には影響しません。コンソールで赤くなる印象的な人の警戒を鈍らせる、tryからのクラッチが使用されます。



PS:投稿は科学的なふりをしていませんが、おそらく、誰かが写真/ビデオのダンプを打ち負かすのに役立つでしょう。



プログラムをダウンロードします



All Articles