目次
for文と文字列操作でフォルダ名を判定する
前回は、Pythonのpathlibを使って素材フォルダ(Sozai)の中身を読み込み、フォルダ一覧を取得するところまで実装しました。
今回は、取得したフォルダ名から先頭の数字を取り出し、自動振り分けの判定を行う部分を作っていきます。
今回の目標
今回の目標は、フォルダ名の先頭文字を取得することです。
例えば、
1旅行動画
2不要動画
3永久保存動画
というフォルダがあった場合、
- 1 → 保存フォルダへ移動
- 2 → 削除フォルダへ移動
- 3 → 保存+バックアップ
という処理を行うために、まずは先頭の数字を判定できるようにします。
素材フォルダを1つずつ処理する
まずは前回学習したiterdir()を利用して、素材フォルダの中を1つずつ確認します。
from pathlib import Path
base = Path('/Volumes/Doga')
sozai = base / 'Sozai'
for folder in sozai.iterdir():
print(folder.name)
実行すると、
1旅行動画
2不要動画
3永久保存動画
のように、フォルダ名だけを表示できます。
フォルダだけを処理する
素材フォルダの中には、ファイルが混ざっている可能性もあります。
そのため、フォルダだけを処理するようにします。
for folder in sozai.iterdir():
if not folder.is_dir():
continue
print(folder.name)
continueを使うことで、フォルダ以外は無視して次の処理に進めます。
フォルダ名の先頭文字を取得する
Pythonでは、文字列の先頭文字は[0]で取得できます。
name = '1旅行動画'
print(name[0])
実行結果は、
1
となります。
これを実際のプログラムに組み込みます。
for folder in sozai.iterdir():
if not folder.is_dir():
continue
head = folder.name[0]
print(head)
実行すると、
1
2
3
のように表示されます。
先頭の番号を削除する
最終的には、移動後のフォルダ名から先頭の番号を削除したいので、その準備もしておきます。
for folder in sozai.iterdir():
if not folder.is_dir():
continue
head = folder.name[0]
new_name = folder.name[1:]
print(head, new_name)
実行結果は、
1 旅行動画
2 不要動画
3 永久保存動画
となります。
これで、
- 振り分けに使う番号
- 実際に保存するフォルダ名
の両方を取得できるようになりました。
今回学んだこと
今回学んだ内容は以下の通りです。
- for文でフォルダを1つずつ処理する方法
- continueの使い方
folder.nameでファイル名を取得する方法[0]で先頭文字を取得する方法[1:]で先頭文字以外を取得する方法
ここまでできれば、いよいよ自動振り分け処理を実装できます。
次回予告
次回は、if文を利用して、
- 1 → Hozonへ移動
- 2 → Deleteへ移動
- 3 → Hozonへ移動+Backupへコピー
という、自動振り分け処理を実装していきます。

コメント