初めに
pythonでのファイル・ディレクトリ操作時に使用されるshutilライブラリの使用方法を記載する。
紹介内容
関数 | 処理 | 内容 |
---|---|---|
.copyfile(src, dst) | コピー | ファイルのコピー |
.copy(src, dst) | コピー | ファイルのコピーもしくはディレクトリ下へコピー |
.copy2(src, dst) | コピー | ファイルのコピーもしくはディレクトリ下へコピー(メタデータ含む) |
.copytree(src, dst) | コピー | ディレクトリツリーのコピー(メタデータ含む) |
.rmtree(src) | 削除 | ディレクトリツリーの削除 |
.move(src, dst) | 移動 | ディレクトリツリーの移動(メタデータ含む) |
shutil
ファイルやディレクトリを操作する際に、使用するライブラリ。
標準的に導入されているため、外部からのインストールは基本的に不要。
import shutil
公式ドキュメント
モジュールはファイルやファイルの集まりに対する高水準の操作方法を多数提供します。
特にファイルのコピーや削除のための関数が用意されています。
コピー
ファイルおよびディレクトリのコピーは以下の関数で実施する。
以下の例では、srcからdstへコピーを行う。
関数 | 内容 |
---|---|
.copyfile(src, dst) | ファイルのコピー |
.copy(src, dst) | ファイルのコピーもしくはディレクトリ下へコピー |
.copy2(src, dst) | ファイルのコピーもしくはディレクトリ下へコピー(メタデータ含む) |
.copytree(src, dst) | ディレクトリツリーのコピー(メタデータ含む) |
ファイル
ファイルがコピー(複製)される。
ファイルパスからファイルパスを指定する。
.
┗ test_old
┗ old.txt
import shutil
path_old = './test_old/old.txt'
path_new = './test_old/new.txt'
shutil.copyfile(path_old, path_new)
# shutil.copy(path_old, path_new) # コピー動作は同様
# shutil.copy2(path_old, path_new) # コピー動作は同様 ※メタデータのコピーあり
.
┗ test_old
┣ old.txt
┗ new.txt
ディレクトリ下
コピーするファイルパスを指定し、移動先にディレクトリを指定する。
移動先のディレクトリに、指定したファイルがコピーされる。
.
┣ test_old
┃ ┗ old.txt
┗ test_new
import shutil
path_old = './test_old/old.txt'
path_new = './test_new' # ディレクトリを指定することが可能
shutil.copy(path_old, path_new)
# shutil.copy2(path_old, path_new) # コピー動作は同様 ※メタデータのコピーあり
.
┣ test_old
┃ ┗ old.txt
┗ test_new
┗ old.txt
ディレクトリツリー
ディレクトリからディレクトリを指定し、指定したディレクトリ以下のディレクトリツリーをコピーする。
.
┗ test_old
┗ old.txt
import shutil
path_old = './test_old'
path_new = './test_new'
shutil.copytree(path_old, path_new)
.
┣ test_old
┃ ┗ old.txt
┗ test_new
┗ old.txt
削除
ファイルおよびディレクトリ削除は、shutil.rmtreeで行う。
ディレクトリツリー
指定したファイルもしくはディレクトリを削除する。
ディレクトリを指定した場合は、そのディレクトリを含む、ディレクトリツリーが削除される。
.
┣ test_old
┃ ┗ old.txt
┗ test_new
┗ old.txt
import shutil
path_old = './test_old'
shutil.rmtree(path_old)
.
┗ test_new
┗ old.txt
移動
ファイルおよびディレクトリの移動は、shutil.moveで行う。
移動動作は、ファイルおよびディレクトリのコピー後、元を削除することで実施される。
したがって、上記のコピーと削除を組み合わせた動作結果となる。
ファイル
ファイルパスからファイルパスを指定する。
元のファイルは、コピー後に削除される。
.
┗ test_old
┗ old.txt
import shutil
path_old = './test_old/old.txt'
path_new = './test_old/new.txt'
shutil.move(path_old, path_new)
.
┗ test_old
┗ new.txt
ディレクトリ
ディレクトリからディレクトリへの移動を指定する。
指定された元のディレクトリは、ディレクトリツリーの移動後、削除される。
.
┗ test_old
┗ old.txt
import shutil
path_old = './test_old'
path_new = './test_new'
shutil.move(path_old, path_new)
.
┗ test_new
┗ old.txt