0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

フォルダ内の古いファイルを削除する

Last updated at Posted at 2023-01-25

Programを実行していると、ディレクトリーの中に”古いファイル”が溜まっていくことありませんか?
エポック秒を利用し古いファイルを判断して、指定した個数以外のファイルを削除する様にしました。

# "/Qiita投稿Program/古いファイルを削除/test/"フォルダ内の古いファイルを削除する

# ---------------------------------------------------------------------------
import os       # OSに依存しているさまざまな機能を利用するためのモジュール
import glob     # 引数に指定されたパターンにマッチするファイルパス名を取得
# ---------------------------------------------------------------------------
def p():
    print('-'*50)
    print('')

# ---------------------------------------------------------------------------
def remv():
    # フルパスで記述
    # ↓「書類」にあるファイルの場合
    # PATH =  '/Users/user名/Documents/test/'

    # ↓ iCloudにあるファイルの場合( /com~apple~CloudDocs/以下はご自身の配列で記述してください。これは参考です。)
    PATH = '/Users/user名/Library/Mobile Documents/com~apple~CloudDocs/qiita関係/Qiita投稿Program/09_フォルダ内の古いファイルを削除/test/'
   
    # --------------------------------------

フルパスの取得
フィルダを指定して右クリックから「パス名をコピー」でフルパスを取得
注意:パスの最後にスラッシュ(/)の追記を忘れない様に(・・/古いファイルを削除/test/)
giita.jpg

    # --------------------------------------
    # フォルダ内のファイル一からファイルパスを取得してファイル名のみを取得してから、ファイルの作成日時(エポック秒)を取得(古いファイルから消すため)
    files = glob.glob(PATH + "*.txt")
    temp2 = []
    
    # --------------------------------------
    # ファイル名とエポック秒をセットにしてリストに変換し2次元リストを作成[['ファイル名', エポック秒],['ファイル名', エポック秒],...]
    for file in files:
        # ファイルパスからファイル名.拡張子を取得
        f_name= os.path.basename(file)
        
        for i in range(1):
            temp1 = []
            # ファイル名をリストへ
            temp1.append(f_name)
            
            # ファイルのエポック秒を取得
            epSec = os.path.getctime(file)

            # epSecをリストに代入
            temp1.append(epSec)
        
        temp2.append(temp1)

    # リストをソート
    temp2.sort()
    
    # temp2にあるファイルの個数を調べる
    ln = len(temp2)

    # リストにn個ファイルを残して削除
    n = 2    # フォルダに残す個数を指定
    lv = ln - n

    # 削除
    for i in range(lv):
        sr = temp2[i][0]
        print(f'削除したファイル名:{sr}')

        os.remove(PATH + sr)
        
    if lv>2:
        p()
        print('以上のファイルを削除完了しました。')
        p()
    else:
        print(f'現在のファイル数は{n}個です。')
        p()
if __name__=='__main__':
    remv()
0
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?