ディレクトリやファイルのコピー、あれこれ

あるディレクトリのコピーを作成する場合、どうやるのが一番いいのか検討。できるかどうかは別にして、考えられる処理手順としては、

がある。後者の方法の方が、手順が少ないからよい。

調べたら、どうやらできそう。たまにやっていることながら、頻繁にはやっていないのですぐに方法を忘れてしまう。

ディレクトリのコピー

ディレクトリoldをコピーして、ディレクトリnewを作成する。

import shutil
import os

oldpath = os.path.join(os.getcwd(), 'old')
newpath = os.path.join(os.getcwd(), 'new')

shutil.copytree(oldpath, newpath)

すでにnewというディレクトリがあると、OSErrorになる。その場合、既存のnewを削除してからコピーするには、

import shutil
import os

oldpath = os.path.join(os.getcwd(), 'old')
newpath = os.path.join(os.getcwd(), 'new')

try:
    shutil.copytree(oldpath, newpath)
except OSError:
    shutil.rmtree(newpath)
    shutil.copytree(oldpath, newpath)

このようにやろう。

ファイルのコピー

ディレクトリ内のあるファイルだけをコピーする場合は、

import shutil
import os

oldpath = os.path.join(os.getcwd(), 'old', 'file')
newpath = os.path.join(os.getcwd(), 'new')

shutil.copy2(oldpath, newpath)

でできた。ディレクトリoldのファイルfileを、ディレクトリnewにコピーする。

参考:http://morchin.sakura.ne.jp/effective_python/file_system.html