【Pythonサンプルコード】フォルダ内のファイル名一覧のリストを取得して、更新時刻が古い順にファイルを削除していくコード
ディスク容量を空ける作業を自動化する
ツイッターbotなどで自動的にファイルが生成されるように設定してあるサーバーの場合、ファイルを定期的に削除しなければいつかディスクが一杯になってしまいます。
そこで今回は、ファイルが一定数貯まると、自動で古い順からファイルを削除していくpythonコードをご紹介します。
サンプルコード
import os import glob #上限ファイル数の指定 max_file=300 #「tw_imgs」フォルダ内の拡張子.pngのファイル名リストを取得 file_list=glob.glob("tw_imgs/*.png") #ファイルの最終更新時刻順にソートする sorted(file_list, key=lambda f: os.stat(f).st_mtime, reverse=True) #上限ファイル数を越えている場合、更新日時が古い順から10個削除する if len(file_list) > max_file: for i in range(10): os.remove(file_list[i])
解説
file_list=glob.glob("tw_imgs/*.png")
ここでファイル名一覧をリスト変数として取得
※なおこの時点ではソートされていないので順番はバラバラ
「tw_imgs/」は.pyファイルがある場所から見たディレクトリ名
「*.png」はワイルドカードで、pngファイルだけを抽出している
sorted(file_list, key=lambda f: os.stat(f).st_mtime, reverse=True)
ここでファイルの最終更新時刻順に並べ替えを行っている
その他、「作成日時」や「アクセス日時」などのファイルが持つ情報で並べ替えをしたい場合は下記のページを参照
ディレクトリ内のファイルリストを取得する – Pythonプログラミング物語
os.remove(file_list[i])
os.remove()を使用して、リストの上から順にファイル削除していく
Corn機能を利用した定期実行
このコードの実行自体を自動で定期実行したい場合はCronを使うとよい。
Cornは大体のレンタルサーバーに備わっていますし、もしCronが無い場合は外部サイトを利用する方法もあります。