ファイルのコピーは、コピー元ファイル、コピー先ファイルをopenして、コピー元を読み込みながら、コピー先に書き込めばできるが、もっとシンプルに元と先のファイルパスだけ指定してコピーしたい場合は、shutilモジュールのcopyfileを使うことでできる。
shutilモジュールには、高レベルなファイル操作が用意されている。OSのシェルコマンドを使えば簡単な操作だが、プログラムで実装すると手間な処理を簡単に実装できる。(OSのシェルコマンドは使用しないので環境依存しない)
ディレクトリをツリーごと作成
>>> import os
>>> os.makedirs('/tmp/foo/bar/hoge')
# /tmp/foo/bar/hoge のディレクトリツリーを作成。
# 親ディレクトリがなければ作成)
ファイルのコピー(shutil.copy)
>>> import shutil
>>> shutil.copy("/tmp/src", "/foo/dst")
# /tmp/srcを /foo/dst にコピー
ディレクトリまるごとコピー(shutil.copytree)
>>> import shutil
>>> shutil.copytree("/tmp/srcdir", "/foo")
# /tmp/srcdirの配下のファイルも含めて
# まるごと/fooにコピーする
ディレクトリまるごと削除(shutil.rmtree)
os.rmdirでは、ディレクトリ内にファイルが存在する場合に削除できないが、shutil.rmtreeは削除できる。
>>> import shutil
>>> shutil.rmtree("/tmp/foo")
# /tmp/foo ディレクトリツリー全体を削除
ファイルの移動(shutil.move)
>>> import shutil
>>> shutil.move("/tmp/src", "/tmp/dst")
# /tmp/srcを/tmp/dstに移動