2022/3/22

pythonでファイルを日付によって操作する


pythonで、フォルダ内にあるファイルを日付によってコピーしたり削除したりする方法をまとめました。

プログラムの基本形

pythonプログラムファイルと同じフォルダにあるファイルで、更新日が20日以上前のもののファイル名をコンソール上に表示するプログラムです。
これを基本形として、"print(file)"の部分を、コピーにしたり削除にしたりすれば様々な処理が可能です。

import os
from datetime import datetime

files = os.listdir()
now = datetime.now()

for file in files: 
    mtime = datetime.fromtimestamp(os.path.getmtime(file))

    if((now - mtime).days > 20):
        print(file)

os.listdir() : ディレクトリ内のファイル一覧を取得します
datetime.now() : 現在時刻を取得します
os.path.getmtime() : ファイルの最後に更新した時刻をUNIX時間で取得します
datetime.fromtimestamp() : UNIX時間を現在時間に変換します

※UNIX時間とは、1970年1月1日午前0時0分0秒からの経過秒数です。
 詳細は下記を参照ください。
wikipedia UNIX時間

ファイル削除

更新日時が20日以上前のファイルを削除します。
削除したファイルは復活できませんので(危険・・!)、上記の基本形で対象ファイルを確認してから実行すると良いです。

import os
from datetime import datetime

files = os.listdir()
now = datetime.now()

for file in files: 
    mtime = datetime.fromtimestamp(os.path.getmtime(file))

    if((now - mtime).days > 20):
        os.remove(file)

os.remove() : ファイルを削除します。

ファイルをゴミ箱に移動

更新日時が20日以上前のファイルをゴミ箱に移動します。
send2trashをインストールする必要があります。

pip install send2trash
import os
from datetime import datetime
from send2trash import send2trash

files = os.listdir()
now = datetime.now()

for file in files: 
    mtime = datetime.fromtimestamp(os.path.getmtime(file))

    if((now - mtime).days > 20):
        send2trash(file)

ファイルコピー

更新日時が20日以上前のファイルをoldフォルダへ移動します。
コピー先のフォルダが存在しないとエラーになります。
import shutil が増えています。

import os
from datetime import datetime, date
import shutil

files = os.listdir()
now = datetime.now()

for file in files: 
    mtime = datetime.fromtimestamp(os.path.getmtime(file))

    if((now - mtime).days > 20):
        shutil.copyfile(file , "./old/" + file)

shutil.copyfile(src, dist) : srcをdistへコピーします。


以上です。




コメント(githubのアカウントが必要です)