Pythonでファイルやフォルダを移動するときに使うshutilモジュールでの2つの関数を紹介します。
この内容を理解するにあたり、ルートディレクトリ、カレントディレクトリ、相対パス、絶対パスのを知っておく必要があります。
今回は「ルートディレクトリ・カレントディレクトリ・ファイルパス」の説明をします。 もし、「ディレクトリ」という言葉が分からない場合は下の記事をご覧ください。 [sitecard subtitle=関連記事 url="https[…]
パソコンを使ったことがあるのなら一度は聞いたことがあるとは追うこれらの言葉「ファイル・フォルダ・ディレクトリ」の違いを説明していきたいと思います。 本棚に本がたくさん入っているようにフォルダ(ディレクトリ)の中にファイルが入っている[…]
移動(shutil.move)
ファイルの移動
- shutilモジュールをインポート
- 第1引数にファイルパスを指定
- 第2引数に移動先のフォルダパスを指定
これらの点に注意しながら、以下のblogフォルダの「sample.txt」ファイルを「folder2」に移動します。
1 2 3 4 5 6 7 8 9 10 |
C: #blogフォルダの中身 │ sample.txt │ スケジュール.xlsx │ │─ folder1 │ ├─ step1.txt │ ├─ step2.txt │ └─ step3.txt │ └ folder2 |
1 2 3 4 5 |
import shutil path1 = r"C:\blog\sample.txt" path2 = r"C:\blog\folder2" shutil.move(path1, path2) |
これを実行すると何も表示されませんが、以下のようにファイルの移動はできています。
1 2 3 4 5 6 7 8 9 10 |
C: #blogフォルダの中身 │ スケジュール.xlsx │ │─ folder1 │ ├─ step1.txt │ ├─ step2.txt │ └─ step3.txt │ └ folder2 └─ sample.txt |
フォルダの移動
第1引数に移動したいフォルダのパスを指定するだけです。
先ほどの「folder2」を「folder1」に移動すると以下のようになります。
1 2 3 4 5 |
import shutil path1 = r"C:\blog\folder2" path2 = r"C:\blog\folder1" shutil.move(path1, path2) |
1 2 3 4 5 6 7 8 9 |
C: #blogフォルダの中身 │ スケジュール.xlsx │ │─ folder1 ├─ step1.txt ├─ step2.txt ├─ step3.txt └─ folder2 └─ sample.txt |
フォルダの名前を変更
移動先のフォルダとして存在しないフォルダ名を指定すると新しくフォルダが作られます。
「folder1」の移動先を「folder3」とした場合はこのフォルダは存在しないので名前が変更されます。
1 2 3 4 5 |
import shutil path1 = r"C:\Users\queen\Desktop\blog\folder1" path2 = r"C:\Users\queen\Desktop\blog\folder3" shutil.move(path1, path2) |
1 2 3 4 5 6 7 8 9 |
C: #blogフォルダの中身 │ スケジュール.xlsx │ │─ folder3 #名前が変わっている ├─ step1.txt ├─ step2.txt ├─ step3.txt └─ folder2 └─ sample.txt |
コピー
ファイルコピー(shutil.copy)
- shutilモジュールをインポート
- 第1引数にファイルパスを指定
- 第2引数にコピー先のフォルダパスを指定
1 2 3 4 5 6 7 8 9 10 |
C: #blogフォルダの中身 │ スケジュール.xlsx │ │─ folder1 │ ├─ step1.txt │ ├─ step2.txt │ └─ step3.txt │ └ folder2 └─ sample.txt |
「step1.txt」ファイルを「folder2」へコピーすると以下のようなコードになります。
1 2 3 4 5 |
import shutil path1 = r"C:\blog\folder1\\step1.txt" path2 = r"C:\blog\folder2" shutil.copy(path1, path2) |
1 2 3 4 5 6 7 8 9 10 11 |
C: #blogフォルダの中身 │ スケジュール.xlsx │ │─ folder1 │ ├─ step1.txt │ ├─ step2.txt │ └─ step3.txt │ └ folder2 ├─ step1.txt #コピーされた └─ sample.txt |
フォルダのコピー(shutil.copytree)
- 第1引数にコピーしたいフォルダパスを指定
- 第2引数にコピー先の新規フォルダパスを指定
「folder2」のコピーとして「folder3」の新規作成します。
1 2 3 4 5 |
import shutil path1 = r"C:\blog\folder2" path2 = r"C:\blog\folder3" shutil.copytree(path1, path2) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
C: #blogフォルダの中身 │ スケジュール.xlsx │ │─ folder1 │ ├─ step1.txt │ ├─ step2.txt │ └─ step3.txt │ │─ folder2 │ ├─ step1.txt │ └─ sample.txt │ └ folder3 #新規&コピー ├─ step1.txt └─ sample.txt |
既存のフォルダ内にコピーすることはできません。「FileExistsError」になってしまいます。
まとめ
- shutil.move関数:ファイルやフォルダの移動
- shutil.copy関数:ファイルのコピー
- shutil.copytree関数:フォルダを新規フォルダにコピー
- ファイル操作で使うosモジュールの関数16個まとめ
- ファイルを読み込む手順【open・close・path・withの使い方】
- ファイルに書き込み・上書き・読み込みする5つの方法【open関数のモード選択】
- フォルダ内のファイル名を取得・名前を変更する方法
- ファイル・フォルダを削除・作成する方法
- 絶対パスと相対パスの判定・変換する方法
- ファイル・フォルダを移動・コピーする方法【shutilモジュールの使い方】
- ファイルを読み込む5通りの方法【リスト・for文・一行ずつ】
- ディレクトリツリーを取得してファイル一覧を表示する方法【os.walkの使い方】
- ファイル・フォルダがあるかどうかの存在確認と判定する方法
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]