質問: file_name: shutil.copy("./pic_test/*.jpg", "./pic_move/") ``` ### 試したこと shutil.copyやshutil.moveを試行しましたが、挙動しません。 for i in list_a:以下が間違っていると思うのですが解決法がわかりません。 そもそも考え方が違うかもしれません。 ご教示頂けると助かります。 よろしくお願いします。 ### 環境 windows10 python:3.6
回答: こんな感じでしょうか? ``` import glob import os import re import shutil no_list = [1, 2, 3] # 画像番号 src_dirpath = 'images' # コピー元ディレクトリ dst_dirpath = 'output' # コピー先ディレクトリ # 出力ディレクトリが存在しない場合、作成する。 os.makedirs(dst_dirpath, exist_ok=True) regex = re.compile(r'^(\d{1,})_s\.(jpg|png|gif)$') for img_path in glob.glob(os.path.join(src_dirpath, '*.jpg')): filename = os.path.basename(img_path) # 数字部分を抽出する。 matches = regex.match(filename) if not matches: continue # マッチしない場合 no = int(matches.group(1)) if no not in no_list: continue # 移動しない番号の場合 # コピーする。 dst_path = os.path.join(dst_dirpath, filename) shutil.copy(img_path, dst_path) print('move: {} -> {}'.format(img_path, dst_path)) ``` ``` move: images/3_s.jpg -> output/3_s.jpg move: images/1_s.jpg -> output/1_s.jpg move: images/2_s.jpg -> output/2_s.jpg ```