スポンサーリンク

【Python】指定したフォルダ内のファイルをまとめて移動させる

スポンサーリンク
スポンサーリンク
この記事は約5分で読めます。

この記事では、指定したフォルダ内のファイルを

まとめて別のフォルダに移動させる方法についてまとめています。

 

指定したフォルダ内のファイルをまとめて移動させる方法

 

globとshutilライブラリを組み合わせて使う

globとshutilの2つのライブラリを組み合わせて使うことで実現できます。

globで指定したフォルダ内の全ファイルを調べ、shutilで移動させるイメージです。

 

globで全ファイルを取得する書式は以下の通りです。

変数 = glob.glob(“*”)

 

globについては以下の記事を併せてご覧ください。

globの使い方。指定したフォルダ内のファイル名一覧を取得する

 

shutilでファイルを移動させる書式は以下の通りです。

shutil.move([移動させるファイルのアドレス],  [移動先フォルダ])

第一引数には移動させるファイルのアドレスを指定します。

第二引数には移動先のフォルダのアドレスを指定します。

 

shutilの使い方は後日記事を追加します。

 

 

指定フォルダ内の全ファイルをまとめて移動させる

 

指定したフォルダのファイルをまとめて移動させるPythonのコードは以下の通りです。

上記のコードは以下の流れで動いています。

最初にライブラリをインポートしています。

 

“input_folder_path”と”output_folder_path”で移動元と移動先のフォルダのアドレスを変数に代入しています。

 

“os.chdir()”で移動元のフォルダに移動し、カレントディレクトリを変更しています。

※カレントディレクトリについては後述の内容をご覧ください。

 

“file_list = glob.glob(“*”)”でカレントディレクトリの全ファイル名を取得しています。

 

最後に、for文内のコードでファイルを全て別のフォルダに移動させています。

“shutil.move(file, output_folder_path)”が実際にファイルを移動させる部分です。

 

 

 

上記のコードを実行すると、移動元のフォルダにあった全ファイルが、

移動元のフォルダに全ファイルがある

 

 

移動先のフォルダに全て移動されていることが確認できます。

移動先のフォルダに全ファイルが移されている

 

誰かが開いているフォルダを除いた全ファイルを移動させる

共有フォルダで起こりがちな現象として、他の誰かがファイルを開いているために、全ファイルを移動させようとしてもできないことです。途中でエラーが発生してしまいます。

 

上記のコードは以下の流れで処理されます。

ライブラリのインポート、移動元と移動先フォルダのアドレスの指定までは同じです。

 

変数file_listにファイル名を取得する部分は少し異なります。

“file_list = glob.glob([“!~$”]*)”

これは、特殊文字を使ったglobモジュールによって、先頭に「~」または「$」が付くファイルを除いた全ファイルを取得しています。

誰かがファイルを開いていると、隠しファイルで「~$ファイル名」といった一時ファイルが作成されます。これはファイルが閉じられるまで存在します。

これを除いた全ファイルを取得しないと、後でファイルを移動させるときにエラーの原因となってしまいます。

詳しくは以下の記事をご覧ください。

globの使い方。指定したフォルダ内のファイル名一覧を取得する

 

次に、for文で変数file_listに保持された各ファイルについて順番に処理を行います。

tryを使ってそれぞれのファイルが開かれている場合と開かれていない場合に応じて処理を分けます。

 

tryは例外処理を行う時に使われます。例外処理とはいわゆるエラーが発生した場合に特別な処理を行うことです。今回はファイルが開かれている場合はエラーが発生することを利用します。

※tryと例外処理については後日記事を追加します。

 

まず、for文での各ループの最初に、”f=open.(file, “a”)”とすることで、追記モードでファイルを開きます。

もし、他の誰かがファイルを開いている場合は、この時にPermissionErrorというエラーが発生します。

 

ファイルが開かれている場合、PermissionErrorが発生するので、この場合はpassを使ってそのループではでは何もしないことを指示しています。

 

一方で、ファイルが開かれていない場合はPermissionErrorは発生しないので、shutil.moveでそのファイルを移動先のフォルダへ移動させます。

 

カレントディレクトリについて

カレントディレクトリとは、現在の作業ディレクトリです。

コマンドプロンプトでPythonと入力して実行するとPythonが起動しますが、

この時にいる場所がカレントディレクトリになります。

 

例えば、コマンドプロンプトでデスクトップにいるときは以下のようになります。

C:\Users\[ユーザー名]\Desktop>

カレントディレクトリはデスクトップになっています。

この状態でPyhhonを起動するといつもの対話モードでの実行環境になります。

C:\Users\[ユーザー名]\Desktop>Python
>>>
Pythonで組まれたプログラムを実行するとき、このカレントディレクトリが基準になります。
別のフォルダにファイルを移動させたりするときは、そのフォルダのアドレスを指定するか、カレントディレクトリから見てどの位置にあるかを指定する必要があります。

まとめ

今回は、指定フォルダ内の全ファイルを別のフォルダにまとめて移動させる方法についてまとめました。

 

Python記事一覧

 

コメント