デスクトップが汚くなってきた...
ファイルを片付けるのもめんどくさい。
対策として以下のことを試すことにした。
- 一時的に使用するファイルを
\tmp
フォルダにまとめる - 大切なファイルはオンラインストレージにバックアップする(手動)
\tmp
フォルダにあるファイルのうち、一週間以上使っていないファイルは自動で削除
3.をPythonで書いた。
完成!「ファイル自動削除くん.bat」
使い方
コード
Gistにも上げた(シンタックスハイライトのために.pyにしてる)→ dannyso16/delete_unused_files.py
ただしプログラムは以下の環境で作った。
- Windows 10 Education
- Python 3.7
PythonプログラムはMacやLinuxでも動作する(はず)です。コードはやや新しいPythonの書き方をしている部分があるので3.6以降だと安心です。
以下完成したコード(.bat
ファイルにPythonプログラムを書いている)
REM = r"""
SET PYTHON_EXE="python.exe"
%PYTHON_EXE% %0 %1
PAUSE
EXIT
"""
import os
import glob
import time
import send2trash
root_dir = os.path.abspath(os.path.dirname(__file__))
os.chdir(root_dir)
files = glob.glob("./**")
print(f"{len(files)} files here.")
print(files)
current_time = time.time()
print("Now deleting unused files...")
for f in files:
name, ext = os.path.splitext(f)
if ext == ".bat":
continue
atime = os.path.getatime(f) # last access time
ctime = os.path.getctime(f) # last metadata change time
mtime = os.path.getmtime(f) # last modification time
# delete file which you don't access within a week
days_from_last_access = (current_time - atime)/3600/24
if (days_from_last_access >= 7):
send2trash.send2trash(f)
print(f"--- {f}")
print("Completed.")
コードの工夫ポイント
多くは第38回ゼロからはじめるPython「Pythonで不要ファイルを一括削除しよう」を参考にしている。
1. ゴミ箱に移す
os.remove
ではファイルが完全に消え去ってしまうので念のためゴミ箱に移す。PythonではSend2trashが便利でWindowsだけでなくMacやLinuxでも、よしなにやってくれる。
# pip install Send2Trash しましょう
import send2trash
# ゴミ箱に入れる
send2trash.send2trash('/path/of/file')
2. batファイルをどこでも実行できるようにする
最初は「どうせデスクトップで使うし…」と思ってパスをべた書きしてた。
root_dir = "./path/for/desktop/tmp"
以下略
しかし不要なファイルがたまるのはデスクトップだけでない。ゴミ箱と化している「ダウンロード フォルダ」やスクショをためる「ピクチャ フォルダ」も掃除したかったので、.bat
のファイルがある場所にカレントディレクトリを設定するようにした。
root_dir = os.path.abspath(os.path.dirname(__file__))
os.chdir(root_dir)
3. 消す条件はお好きにどうぞ
ファイルを削除する部分を抜粋する。
for f in files:
name, ext = os.path.splitext(f)
if ext == ".bat":
continue
atime = os.path.getatime(f) # last access time
ctime = os.path.getctime(f) # last metadata change time
mtime = os.path.getmtime(f) # last modification time
# delete file which you don't access within a week
days_from_last_access = (current_time - atime)/3600/24
if (days_from_last_access >= 7):
send2trash.send2trash(f)
print(f"--- {f}")
ここでは
- 拡張子
.bat
は削除しない - 7日間アクセスしていないファイルを削除する
ようにした。お好みで「〇日間編集していないファイルを削除する」などに変えて使ってください。
最後に
小さい自動化でも結構たのしいし、定期実行するように設定しておけば便利そう。「もっと簡単にデスクトップをきれいにするやり方があるよ」とか「コードはこう書くといいよ」はGist上かQiitaで気軽に教えてください。
あとどうでもいいけど、デスクトップはとってもきれいになりました。
Just Do It !! 極度掃除(しなさい)
これは以下のツイートに影響されています。
大事なファイルがどこにあるか忘れる事が多いんだけど壁紙これに変えたらそれがきっぱり無くなったのでオススメ pic.twitter.com/gwznsux0P2
— とらうとさぁもん (@Harpuia_tomo) September 22, 2019