13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[python] shutilを用いたファイル・フォルダ操作(コピー・削除・移動)

Last updated at Posted at 2021-12-19

初めに

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
13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?