【完全ガイド】Pythonでファイルを移動する方法|shutil.move()の使い方を徹底解説
shutil.move()メソッドは、コンピュータ上の別の場所へファイルを移動するためのPythonの関数です。このメソッドはshutilモジュールに含まれているため、使用する前にモジュールをインポートしておく必要があります。
ファイルの移動は、Pythonプログラミングにおけるごく一般的な操作です。たとえば、ファイルを生成するプログラムを開発している場合、新しいファイルを作るためのスペースを確保する目的で、既存のファイルを別のフォルダへ移動させたい場面があるかもしれません。
そんなときに役立つのがshutil.move()関数です。この関数を使えば、システム上のあるフォルダから別のフォルダへファイルを簡単に移動できます。本記事では、具体的なコード例を交えながら、shutil.move()関数の使い方を詳しく解説します。
Python shutilモジュールとは
shutilモジュールは、ファイルに対して実行できる高度な操作を多数提供している標準ライブラリです。osライブラリと異なる点は、複数のファイル(ファイルのコレクション)に対して一括で操作を行える関数が用意されているところです。
本記事では、Pythonでファイルを移動できるshutil.move()関数に焦点を当てて説明していきます。
move()関数の詳細に入る前に、まずshutilライブラリをコードにインポートしましょう。以下のimport文を使用します。
import shutil
Pythonでファイルを移動する基本構文
shutil.move()関数は、コンピュータ上のファイルを移動します。このメソッドは、「移動したいファイルのパス」と「移動先の新しいファイルパス」の2つを引数として受け取ります。
関数の構文は次のとおりです。
shutil.move(source, destination)
shutil.move()が受け取る2つのパラメータは以下のとおりです。
- source(移動元パス):移動したいファイルのファイルパス。
- destination(移動先パス):ファイルの移動先となるファイルパス。
move()関数は、移動後のファイルのパスを戻り値として返します。
なお、移動先に同じ名前のファイルがすでに存在する場合は、既存のファイルが上書きされるので注意してください。
指定できるファイルパスは、絶対パスと相対パスのどちらでも構いません。
絶対パスとは、ファイルまでの完全なパスのことです(例:/home/user/file.txt)。一方、相対パスとは、Pythonプログラムを実行しているディレクトリを基準とした場所を指します(例:file.txt)。
また、存在しないディレクトリを移動先として指定した場合は、新しいディレクトリが自動的に作成されます。
ちなみに、osライブラリにはファイルの名前変更によく使われるos.rename()メソッドがあります。このメソッドでもファイルを移動することは可能ですが、shutilのmove()はファイル移動のために特化して設計されています。単純にファイルを移動したいだけであれば、os.rename()よりもshutil.move()の方が直感的で読みやすい構文と言えるでしょう。
Python Move Fileの実践例
ここからは、shutil.move()関数の具体的な使用例をいくつか見ていきましょう。
単一のファイルを移動する
たとえば、raw_data.csvというファイルを、カレントワーキングディレクトリ内のdataというディレクトリへ移動したいとします。その場合、次のようなコードで実現できます。
import shutil source = "raw_data.csv" destination = "data" new_path = shutil.move(source, destination) print(new_path)
このコードを実行すると、次の出力が得られます。
data/raw_data.csv
まず、shutilライブラリをインポートし、続いて2つの変数を宣言しています。source変数には移動したいファイルの名前を、destination変数には移動先ディレクトリの名前を格納しています。
この例では、sourceとdestinationに相対パスを指定しています。つまり、raw_data.csvファイルとdataディレクトリは、Pythonファイルと同じディレクトリ内にあるものとして扱われます。たとえばPythonファイルが/home/user/programに保存されている場合、参照されるのはそのディレクトリ内のファイルやフォルダです。
次に、shutil.move()を使ってファイルを移動します。処理の結果(移動後のファイルパス)は変数new_pathに代入され、最後にprint()でその値を出力しています。
これで、Pythonでファイルを移動することができました。
補足: ここで紹介した構文は、フォルダ(ディレクトリ)の移動にもそのまま使えます。
移動時にファイル名を変更する
shutil.move()関数を使うと、ファイルを移動すると同時に名前を変更することもできます。
たとえば、raw_data.csvをdataフォルダへ移動しつつ、ファイル名をraw_data_2019.csvに変更したい場合は、次のようにコードを書きます。
import shutil source = "raw_data.csv" destination = "data/raw_data_2019.csv" new_path = shutil.move(source, destination) print(new_path)
実行結果:
data/raw_data_2019.csv
ポイントは、移動先のパスを指定する際に新しいファイル名も一緒に指定しているところです。destinationとしてdata/raw_data_2019.csvを指定すると、ファイルはdataディレクトリへ移動され、同時に新しいファイル名raw_data_2019.csvが付けられます。
複数のファイルをまとめて移動する
shutil.move()関数は、複数ファイルの移動にも利用できます。その際は、osライブラリも併用しましょう。os.listdir()メソッドを使えば、ディレクトリ内のファイル一覧を取得できます。
たとえば、/home/user/dataディレクトリ内のすべてのファイルを、/home/user/old_dataという新しいディレクトリへ移動したいとします。dataディレクトリには次のファイルが入っているものとします。
- /home/user/data/data.csv
- /home/user/data/old_data.csv
この場合、次のようなコードで実現できます。
import shutil
import os
source = "/home/user/data"
destination = "/home/user/old_data"
files = os.listdir(source)
for file in files:
new_path = shutil.move(f"{source}/{file}", destination)
print(new_path)
実行結果:
/home/user/old_data/data.csv /home/user/old_data/old_data.csv
コードの内容を順番に見ていきましょう。まず、shutilとosの両ライブラリをインポートします。次に、中身を移動したいフォルダの絶対パスと、移動先フォルダのパスをそれぞれ指定します。
続いて、os.listdir()で移動元フォルダ内の全ファイルのリストを取得し、Pythonのforループで各ファイルを順番に処理します。ループ内ではshutil.move()を呼び出し、各ファイルを1つずつdestinationフォルダへ移動しています。
move()関数の中では、f文字列(f-string)を使って移動したいファイルの完全なパスを組み立てている点にも注目してください。最後に、移動後の各ファイルのパスが出力されます。
まとめ
shutil.move()関数を使うと、コンピュータ上のある場所から別の場所へファイルを移動できます。引数として「移動したいファイルのパス」と「移動先の新しいパス」を指定する必要があります。
単一ファイルの移動、移動と同時のリネーム、forループとos.listdir()を組み合わせた複数ファイルの一括移動など、用途に応じて柔軟に活用してみてください。Pythonでのファイル操作の幅がぐっと広がるはずです。
-
Pythonのファイルオブジェクトとは?open関数によるファイル操作の基本を徹底解説
Pythonでは、ファイルを読み書きする際に特別なライブラリをインポートする必要はありません。ファイル操作は言語にネイティブに組み込まれているためです。 まず最初に行うのは、組み込み関数 open() を使ってファイルオブジェクトを取得することです。open() 関数はファイルを開き、ファイルオブジェクトを返します。このファイルオブジェクトには、開いたファイルから情報を取得したり、内容を操作したりするためのメソッドや属性が含まれています。 ファイルとは何か? ファイル操作を行う前に、「ファイルとは何か」を理解しておきましょう。ファイルとは、関連する情報を保存するためにディスク上に確保された「名
-
WordPressのファイル権限(パーミッション)とは?初心者向け完全ガイド
WordPressのファイル権限(パーミッション)は、議論が絶えないテーマの一つです。ネット上には大量の情報がありますが、その中には誤ったアドバイスも少なくありません。WordPress公式にもファイル権限に関するドキュメントがありますが、初心者にはやや分かりにくい内容となっています。本記事では、WordPressのファイル権限について理解するための完全ガイドをお届けします。この記事で学べる内容は以下のとおりです。サイトを安全に保つために推奨されるWordPressのファイル権限ファイルやディレクトリの権限を安全に変更する方法誤った権限設定によって発生しやすいエラーのトラブルシューティング要点