目次
shutilで動画フォルダを自動で移動・バックアップする
前回は、if文を利用して動画フォルダの振り分けルールを作成しました。
今回は、いよいよ実際にフォルダを移動・コピーする処理を実装します。
ここまで来ると、ただの学習用コードではなく、「実際に使える自分専用ツール」になってきます。
今回の目標
今回実装するルールは以下の通りです。
| 先頭番号 | 処理 |
|---|---|
| 1 | Hozonへ移動 |
| 2 | Deleteへ移動 |
| 3 | Hozonへ移動+Backupへコピー |
例えば、
1旅行動画
2不要動画
3永久保存動画
というフォルダがあった場合、
Hozon/旅行動画
Delete/不要動画
Hozon/永久保存動画
Backup/永久保存動画
という状態になることを目指します。
shutilをインポートする
ファイルやフォルダの移動・コピーには、Python標準ライブラリのshutilを使用します。
import shutil
from pathlib import Path
フォルダを移動する
フォルダの移動は、shutil.move()で行えます。
shutil.move(folder, hozon / new_name)
例えば、
1旅行動画
というフォルダがあれば、
Hozon/旅行動画
へ移動します。
フォルダをコピーする
バックアップには、shutil.copytree()を利用します。
shutil.copytree(folder, backup / new_name)
これにより、フォルダの中身を含めて丸ごとコピーできます。
完成した振り分け処理
これまで学習した内容を組み合わせると、以下のようになります。
from pathlib import Path
import shutil
base = Path('/Volumes/Doga')
sozai = base / 'Sozai'
hozon = base / 'Hozon'
delete = base / 'Delete'
backup = base / 'Backup'
for folder in sozai.iterdir():
if not folder.is_dir():
continue
head = folder.name[0]
new_name = folder.name[1:]
if head == '1':
shutil.move(folder, hozon / new_name)
elif head == '2':
shutil.move(folder, delete / new_name)
elif head == '3':
shutil.copytree(folder, backup / new_name)
shutil.move(folder, hozon / new_name)
このプログラムで学べたこと
今回の動画ファイル整理ツールでは、
- pathlibによるパス操作
- for文
- if文
- continue
- 文字列のインデックス
- スライス
- shutilによる移動
- shutilによるコピー
- 自動化プログラムの設計
など、多くのPythonの基礎を実践的に学ぶことができました。
本を読んで学ぶだけではなく、「自分が実際に使うプログラム」を作ることで、理解がかなり深まったと感じています。
今後やりたいこと
今回のプログラムは最低限の機能ですが、今後は、
- キーワードによる自動振り分け
- エラー処理の追加
- 重複チェック
- ログの保存
- チェックボックス付きGUI化
なども実装していきたいと思っています。
Python学習のアウトプットとして始めた自作ツールですが、最終的には毎日使う実用ツールに育てていきたいと思います。

コメント