Pythonのshutil
モジュールを使ってディレクトリ(フォルダ)、ファイルのコピーや移動を行う方法について説明します。
使用モジュール
モジュール :shutil (Python公式ドキュメント)
インストール:不要
インストール:不要
モジュールのインポート
1 | import shutil |
ディレクトリ構成の例
以下のようなファイル、ディレクトリ構成を例とします。
・
└── test
├── dir1
│ ├── file11.txt
├── dir2
└── file1.txt
└── test
├── dir1
│ ├── file11.txt
├── dir2
└── file1.txt
ファイルのコピー
ファイルをコピーするには shutil
モジュールで用意されている copy()
メソッドを使用します。
第一引数にコピー元のファイルのパスを指定、第二引数はコピー先のパスを指定します。
コピー先のパス指定でファイル名を指定しない場合は、元のファイル名のままコピーされます。
1 | shutil.copy('./test/file1.txt', './test/dir1') |
別名でコピーするには、第二引数のパスでファイル名を指定してください。
1 2 | shutil.copy('./test/file1.txt', './test/dir1/file1_copy.txt') #'./test/dir1/file1_copy.txt' |
ディレクトリ(フォルダ)を中身ごとコピー
中身が入っているフォルダをコピーしようとするとエラーになります。
1 2 | shutil.copy('./test/dir1', './test/dir1_copy') #PermissionError: [Errno 13] Permission denied: './test/dir1' |
フォルダの中身ごとコピーするには、shutil.copytree()
を使います。コピー元とコピー先の引数設定はcopy()
メソッドと同様です。
1 2 | shutil.copytree('./test/dir1', './test/dir1_copy') #'./test/dir1_copy' |
ファイルの移動
ファイルを移動するには shutil
モジュールで用意されている move()
メソッドを使用します。
第一引数に移動元のファイルのパスを指定、第二引数は移動先のパスを指定します。
コピー先のパス指定でファイル名を指定しない場合は、元のファイル名のままコピーされます。
1 2 | shutil.move('./test/file1.txt', './test/dir2') #'./test/dir1/file1.txt' |
ファイル名を変更して移動する場合は、ファイル名を指定します。
1 2 | shutil.move('./test/file1.txt', './test/dir2/file1_copy.txt') #'./test/dir2/file1_copy.txt' |
ディレクトリ(フォルダ)の移動
ディレクトリ(フォルダ)を移動するにはファイルと同様にmove()
メソッドを使用します。
第一引数に移動元のディレクトリのパスを指定、第二引数は移動先のディレクトリを指定します。
1 2 | shutil.move('./test/dir1', './test/dir2/') # './test/dir2/dir1' |
Pythonのshutil
モジュールを使ってディレクトリ(フォルダ)、ファイルをコピー、移動する方法について解説しました。