Python | ファイル・ディレクトリを移動する方法

2023-02-26Python ファイル・ディレクトリ,Python

Python | ファイル・ディレクトリを移動する方法

Pythonで「shutil」モジュールのmove()関数を使ってファイルを移動する方法とサンプルコードを紹介しています。

確認環境

Windows11 ローカル
Python python-3.11.1

ファイルを移動する

Pythonでファイルを移動するには「shutil」モジュールのmove()関数が利用可能です。
move()関数は第一引数に移動するファイルへのパス、第二引数には移動先のパスを指定します。

移動先のパスにディレクトリを指定した場合、ファイルは指定したディレクトリに移動します。

import shutil

# ファイルを移動する
shutil.move("abc.js", "dir")

移動先のパスに同名のファイルを指定した場合も、ファイルは指定したディレクトリに移動します。

import shutil

# ファイルを移動する
shutil.move("abc.js", "dir/abc.js")

移動先のパスに違うファイル名を指定した場合、ファイルはリネームされて指定したディレクトリに移動します。
この場合、元のファイルは残りません。

import shutil

# ファイル名を変更して移動する
shutil.move("abc.js", "dir/cde.js")

移動先のパスがディレクトリの場合で、かつ同名のファイルが移動先にある場合は、ファイルは上書きされずにエラーを出力します。
移動先のパスにファイル名を含めた場合、同名のファイルが移動先にある場合、移動先のファイルは上書きされます。

import shutil

# 同名のファイルがある場合、ファイル名は上書きされずにエラーとなります。
shutil.move("abc.js", "dir")
# shutil.Error: Destination path 'test\aa.js' already exists

# 同名のファイルがある場合、ファイル名は上書きされる
shutil.move("abc.js", "dir/abc.js")

ディレクトリを移動する

ディレクトリを移動させる場合、移動先のパスがディレクトリであれば、move()関数で実装する事が可能です。

import shutil

# ディレクトリをひとつ下の階層に移動する
shutil.move("dir1", "dir2/dir")

移動先のディレクトリ名が存在しない場合はディレクトリの名前が変更されます。
移動先のディレクトリ名が存在していた場合は、そのディレクトリの中に移動します。

import shutil

# 同階層の場合、存在しなければ名前が変更される
# 同階層の場合、存在する場合はその中にはいる
shutil.move("dir1", "dir2")

同名のディレクトリが既に存在して移動できないパターンの場合は第三引数に「dirs_exist_ok=True」を指定します。
このオプション引数は以下のエラーを回避してディレクトリを上書きします。デフォルトでは false です。

shutil.Error:Destination path 'xxx/xxx' already exists

import shutil

# Destination path already existsを回避してディレクトリを上書きする
shutil.move("dir1", "dir2/dir1", dirs_exist_ok=True)