LoginSignup
1
2

More than 5 years have passed since last update.

Pythonで最新の日付文字列のフォルダを特定のフォルダにコピーする

Last updated at Posted at 2018-09-26

20180926のような日付のフォルダーに対する、コピー操作を毎週毎週やっていませんか?
面倒なのでスクリプトを使って楽をしましょう。

copy_latest_folder.py
import os
import shutil
import re

# コピー元のフォルダが含まれるパス
src_path = '/Users/butada/daily_meeting'

# コピー先のファイルパス(このフォルダは存在しないこと)
dst_path = '/Users/public/html/latest'


def get_latest_folder_name(path):

    # ファイル・フォルダ一覧を取得
    folders = os.listdir(path)
    sorted_folders = sorted(folders, reverse=True)
    print('ディレクトリ: ', path)
    print('ディレクトリ一覧: ', sorted_folders)

    # フォルダ一覧から最新の日付文字列のフォルダを選択する
    latest_folder = ''
    for folder in sorted_folders:
        if re.findall(r'^[0-9]', folder):
            latest_folder = folder
            break
        else:
            print(folder)
    if latest_folder == '':
        print('[ERROR] コピー対象のフォルダが見つかりませんでした')
        #exit()
        raise

    return latest_folder


src_folder = get_latest_folder_name(src_path)
#dst_folder = get_latest_folder_name(dst_path) # コピー先も最新の日付文字列フォルダにする場合
dst_folder = '' # 特定のフォルダにコピーする場合

src_full_path = '/'.join([src_path, src_folder])
dst_full_path = '/'.join([dst_path, dst_folder]) # コピー先にコピー元のフォルダ名を残さない場合
#dst_full_path = '/'.join([dst_path, dst_folder, src_folder]) # コピー先にコピー元のフォルダ名を残す場合

print('既存のフォルダを削除します: ', dst_full_path)
try:
  shutil.rmtree(dst_full_path)
except:
  print('--フォルダが存在しませんでした')

print('フォルダツリーをコピーします: ')
print('コピー元: ', src_full_path)
print('コピー先: ', dst_full_path)
shutil.copytree(src_full_path, dst_full_path)

print('完了')
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2