ファイル・フォルダ操作 文法・環境

【python】ディレクトリ(フォルダ)を移動する方法【shutil.move】

pythonで、ディレクトリを移動する方法について紹介します。

本記事では、下記の内容を紹介しています。

この記事で分かること

■ディレクトリを移動する方法【shutil】

  • shutilモジュールでディレクトリを移動【shutil.move】
  • shutilモジュールを用いてディレクトリの移動&リネーム【shutil.move】

なお、本記事で紹介しているサンプルコードは、下記のディレクトリ構成で動作させています。

ディレクトリ構成

スポンサーリンク

■ディレクトリ(フォルダ)を移動する方法【shutil】

pythonの標準モジュールである「shutilモジュール」を用いて、ディレクトリを移動する方法について紹介します。

shutilモジュールの、shutil.moveを使用することで、ディレクトリを移動することができます。

以降では、サンプルコードを交えながら、ディレクトリの移動方法について紹介します。

shutilモジュールでディレクトリを移動【shutil.move】

shutilモジュールの、shutil.moveを用いることでディレクトリを移動できます
また、ディレクトリは中身ごと移動できます

shutil.moveの第一引数には「移動元のパス」、第二引数には「移動先のパス」を指定します。
返り値として、移動後のパスが返されます。

shutil.moveの書き方

移動後のパス = shutil.move( 移動元のパス, 移動先のパス )

以下、shutil.moveでディレクトリを移動するサンプルコードです。

### shutilモジュールでディレクトリを移動
import shutil
import glob
import pprint

pprint.pprint(glob.glob(r'test\folder1\**\*', recursive=True))
# ['test\\folder1\\new_folder', 'test\\folder1\\new_folder\\new_file.txt']
pprint.pprint(glob.glob(r'test\folder2\**\*', recursive=True))
# []

new_path = shutil.move('test/folder1/new_folder', 'test/folder2')

pprint.pprint(glob.glob(r'test\folder1\**\*', recursive=True))
# []
pprint.pprint(glob.glob(r'test\folder2\**\*', recursive=True))
# ['test\\folder2\\new_folder', 'test\\folder2\\new_folder\\new_file.txt']

コードが多少見にくくなってしまっていますが、ディレクトリを移動させているコードは1行だけです。

new_path = shutil.move('test/folder1/new_folder', 'test/folder2')

> pprint.pprint(glob.glob(r'test\folder1\**\*', recursive=True))

globモジュールを用いて、folder1より深い階層のファイル・ディレクトリの一覧を再帰的に取得しています。

globモジュールを用いたファイル・フォルダの一覧取得については、下記の記事で紹介しています。

ファイル・フォルダの一覧取得

なお、移動先に同じ名前のディレクトリがある場合は、「すでに同名のディレクトリが存在する」旨のエラーが発生します。

スポンサーリンク

shutilモジュールを用いてディレクトリの移動&リネーム【shutil.move】

補足的な内容になりますが、shutil.moveの第二引数に新規のディレクトリのパスを指定すると、ディレクトリを移動しリネームすることができます

以下、shutilモジュールでディレクトリを移動し、リネームするサンプルコードです。

### shutilモジュールでディレクトリを移動&リネーム
import shutil
import glob
import pprint

pprint.pprint(glob.glob(r'test\folder1\**\*', recursive=True))
# ['test\\folder1\\new_folder', 'test\\folder1\\new_folder\\new_file.txt']
pprint.pprint(glob.glob(r'test\folder2\**\*', recursive=True))
# []

new_path = shutil.move('test/folder1/new_folder', 'test/folder2/new_folder2')

pprint.pprint(glob.glob(r'test\folder1\**\*', recursive=True))
# []
pprint.pprint(glob.glob(r'test\folder2\**\*', recursive=True))
# ['test\\folder2\\new_folder2', 'test\\folder2\\new_folder2\\new_file.txt']

ディレクトリが移動したうえで、リネームされています。

スポンサーリンク

まとめ

pythonで、shutil.moveを用いてディレクトリを移動する方法について紹介しました。

関連記事として、ファイルを移動する方法について下記記事で紹介しているので、併せて確認してみてください。

ファイルを移動する方法【shutil、os】

スポンサーリンク

-ファイル・フォルダ操作, 文法・環境
-,