コピー(上書きMSGあり)

投稿者: | 2022-06-25

目次

copy2

  • コピー元:ファイル
  • コピー先:ファイル または フォルダ(内)
  • デフォルトで上書きされる(警告なし)
  • copy2はパーミッションとメタデータ(作成者、作成日、更新日など)もコピーされる
def check_and_copy2(src_p, dst_p):
    '''
    同名ファイルがあれば警告し、copy2で上書きコピー
    '''
    if dst_p.exists():
        if input('Overwrite?(y/n): ') == 'y':
            if input('Realy? Overwrite?(y/n): ') == 'y':
                shutil.copy2(src_p, dst_p)
                print('Overwrite Copied')
            else:
                print('Canceled')
                return
        else:
            print('Canceled')
            return
    else:
        shutil.copy2(src_p, dst_p)
        print('Copied')

copytree

  • コピー元:フォルダ
  • コピー先:フォルダ
  • 同名フォルダがあるとデフォルトでエラーが出る
def check_and_copytree(src_p, dst_p):
    '''
    同名フォルダあれば警告後、削除し、copytreeでコピーする
    '''
    if dst_p.exists():
        if input('WARNING: Overwrite, Folder?(y/n): ') == 'y':
            if input('Realy? Realy? Overwrite?(y/n): ') == 'y':
                shutil.rmtree(dst_p)
                shutil.copytree(src_p, dst_p)
                print('Overwrite Copied')
            else:
                print('Canceled')
                return
        else:
            print('Canceled')
            return
    else:
        shutil.copytree(src_p, dst_p)
        print('Copied')