サイトアイコン Python Snippets

ファイルのコピーやディレクトリツリーの作成・削除 (高レベルなファイル操作)

ファイルのコピーは、コピー元ファイル、コピー先ファイルを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に移動

参考:
16.1.5. ファイルとディレクトリ

11.10. shutil — 高レベルなファイル操作

関連記事:

モバイルバージョンを終了