ファイルのキーワードによる 移動 Ver20240602
'''
重複ファイル 例外処理作動
C:\pypy\re-MOVE-文字列-JPG-2024-06-02-TEST-00.py
正常動作 keyword総当たり 成功
移動先は 1フォルダのみ
Ver.TEST-01
移動先に サブフォルダを作成する
【chatGPT】様の ご助言で
移動先に サブフォルダを作成することができた
ただし、移動ファイルは 単一フォルダに移動状態
Ver.TEST-02
に 着手する前に Blog Backup
'''
# =============== import
import os
from pathlib import Path
import glob
import re
import shutil
# =============== 変数定義
# 特定フォルダのみ検索対象の場合の例文 ⇒ 'D:\\abcdefg'
target_path = 'D:\\_0601-TEST'
# Drive全体が検索対象の場合の例文 ⇒ 'D:\\'
# target_path = 'D:\\'
# 検索対象のファイルの移動先フォルダを定義
move_path = 'E:\\TEST-TEST'
print('Move先【移動先-同名ファイル発生時-例外処理で停止】',end='⇒ ')
print(move_path)
ext_name = 'jpg'
print('振り分け拡張子は',end='⇒ ')
print(ext_name)
# =============== CD チェンジディレクトリ
os.chdir(target_path)
cwd = os.getcwd()
print('Move元(検索元)',end='⇒ ')
print(cwd)
# =============== ファイルの移動先のフォルダの存在確認とその処理
if os.path.isdir(move_path):
pass
else:
os.makedirs((move_path), exist_ok=True)
# =============== 振り分け文字列の定義
xxx = 0
key_word_list_1 = [
'北海道',
'東京',
'南極'
]
# =============== 例外処理で 重複ファイル発見時の
# =============== エラー停止を回避
try:
for p in key_word_list_1 :
wd = key_word_list_1[xxx]
sub_path = wd
print(wd)
print(sub_path)
deep_folder_path = Path((move_path)+'/'+(wd))
# フォルダを作成
deep_folder_path.mkdir(parents=True, exist_ok=True)
print(f"Created directory: {deep_folder_path}")
# for p in glob.glob((target_path)+'/**/*'+(wd)+'*.txt', recursive=True):
# 文字列検索 先頭含まない なぜ???
# for p in glob.glob((target_path)+'/**/*'+(wd)+'*.ZIP', recursive=True):
# 拡張子を変数化
# 先頭以外も選択される for p in glob.glob((target_path)+'/**/*'+(wd)+'*.'+(ext_name), recursive=True):
for p in glob.glob((target_path)+'/**/'+(wd)+'*.'+(ext_name), recursive=True):
# 文字列検索 先頭含む
# for p in glob.glob((target_path)+'/**/'+(wd)+'*.ZIP', recursive=True):
shutil.move(p, (move_path))
print(p)
print('ファイルのMoveが終了しました')
xxx = xxx + 1
except:
print('同名ファイルが発見されました。')
print('【例外処理】として 終了します')
print('同名ファイルを処理した後に')
print('再度【本ぷろぐらむ】を実行してください')
# pass
# =============== END END END END END