pythonで、ファイルを移動させる方法について紹介します。
本記事では、下記の内容を紹介しています。
この記事で分かること
■ファイルを移動する方法【shutil、os】
- shutilモジュールでファイルを移動【shutil.move】
- 移動先に同名ファイルがある場合に上書き【shutil.move】
- shutilモジュールを用いてファイルの移動&リネーム【shutil.move】
- osモジュールを用いてファイルを移動【os.rename】
- osモジュールを用いてファイルを移動【os.replace】
なお、本記事で紹介しているサンプルコードは、下記のディレクトリ構成で動作させています。

スポンサーリンク
ファイルを移動する方法【shutil、os】
python標準モジュールである、shutilモジュール、osモジュールを用いてファイルを移動する方法について、それぞれ順番に紹介します。
shutilモジュールでファイルを移動【shutil.move】
shutilモジュールの、shutil.moveを用いることでファイルを移動できます。
shutil.moveの第一引数には「移動元のファイルパス」、第二引数には「移動先のファイルパス」を指定します。
返り値として、移動後のファイルパスが返されます。
shutil.moveの書き方
移動後のパス = shutil.move( 移動元のファイルパス, 移動先のパス )
以下、shutil.moveでファイルを移動するサンプルコードです。
### shutil.moveでファイルを移動する
import shutil
import os
print(os.listdir(r'test\folder1'))
# ['new_file.txt', 'new_folder']
print(os.listdir(r'test\folder2'))
# []
new_path = shutil.move(r'test\folder1\new_file.txt', r'test\folder2')
print(new_path)
# test\folder2\new_file.txt
print(os.listdir(r'test\folder1'))
# ['new_folder']
print(os.listdir(r'test\folder2'))
# ['new_file.txt']
サンプルコードが長くなってしまいましたが、ファイルを移動しているのは、
new_path = shutil.move(r'test\folder1\new_file.txt', r'test\folder2')
の部分だけです。
os.listdirは、ディレクトリの中身を確認するために使用しています。
スポンサーリンク
移動先に同名ファイルがある場合に上書き【shutil.move】
補足的な内容ですが、移動先に同名ファイルがある場合に上書きする方法を紹介します。
ディレクトリ構成はこちらです。

shutil.moveの第二引数に、ディレクトリのパスを指定した場合は、移動先に同名ファイルがあるとエラーとなります。
### 移動先に同名ファイルがある場合
import shutil
import os
print(os.listdir(r'test\folder1'))
# ['new_file.txt', 'new_folder']
print(os.listdir(r'test\folder2'))
# ['new_file.txt']
new_path = shutil.move(r'test\folder1\new_file.txt', r'test\folder2')
# Error: Destination path 'test\folder2\new_file.txt' already exists
shutil.moveの第二引数に、ファイルのパスを指定した場合は、移動先に同名ファイルがあると上書きします。
### 移動先に同名ファイルがある場合
import shutil
import os
print(os.listdir(r'test\folder1'))
# ['new_file.txt', 'new_folder']
print(os.listdir(r'test\folder2'))
# ['new_file.txt']
new_path = shutil.move(r'test\folder1\new_file.txt', r'test\folder2\new_file.txt')
print(new_path)
# test\folder2\new_file.txt
print(os.listdir(r'test\folder1'))
# ['new_folder']
print(os.listdir(r'test\folder2'))
# ['new_file.txt']
shutilモジュールを用いてファイルの移動&リネーム【shutil.move】
補足的な内容になりますが、shutil.moveの第二引数に新規のファイルのパスを指定すると、ファイルを移動しリネームすることができます。
以下、shutil.moveで、ファイルを移動しリネームするサンプルコードです。
### shutil.moveでファイルを移動しリネームする
import shutil
import os
print(os.listdir(r'test\folder1'))
# ['new_file.txt', 'new_folder']
print(os.listdir(r'test\folder2'))
# []
new_path = shutil.move(r'test\folder1\new_file.txt', r'test\folder2\new_file2.txt')
print(new_path)
# test\folder2\new_file2.txt
print(os.listdir(r'test\folder1'))
# ['new_folder']
print(os.listdir(r'test\folder2'))
# ['new_file2.txt']
スポンサーリンク
osモジュールを用いてファイルを移動【os.rename】
次に、osモジュールを用いてファイルを移動する方法を紹介します。
osモジュールの、os.renameを用いることで、ファイルを移動できます。
os.renameの第一引数には移動元のファイルパスを指定し、第二引数には移動先のファイルパスを指定します。
os.renameの書き方
os.rename( 移動元のファイルパス, 移動先のファイルパス )
以下、os.renameを用いて、ファイルを移動するサンプルコードです。
### os.renameでファイルを移動
import os
print(os.listdir(r'test\folder1'))
# ['new_file.txt', 'new_folder']
print(os.listdir(r'test\folder2'))
# []
os.rename(r'test\folder1\new_file.txt', r'test\folder2\new_file.txt')
print(os.listdir(r'test\folder1'))
# ['new_folder']
print(os.listdir(r'test\folder2'))
# ['new_file.txt']
osモジュールを用いてファイルを移動【os.replace】
osモジュールの、os.replaceを用いても、ファイルを移動できます。
os.renameとの違いは、pythonの公式ドキュメントを参照ください。
以下、os.replaceを用いて、ファイルを移動するサンプルコードです。
### os.replaceでファイルを移動
import os
print(os.listdir(r'test\folder1'))
# ['new_file.txt', 'new_folder']
print(os.listdir(r'test\folder2'))
# []
os.replace(r'test\folder1\new_file.txt', r'test\folder2\new_file.txt')
print(os.listdir(r'test\folder1'))
# ['new_folder']
print(os.listdir(r'test\folder2'))
# ['new_file.txt']
スポンサーリンク