木. 12月 26th, 2024

スキルシェアリング.info

さまざまな問題にITスキルで立ち向かうITソリューションブログ

【Python】フォルダ内のファイルを移動させるスクリプト

はじめに

どうもMizokeiです。
社内では、普段からデータの共有を行い、定期的にあるフォルダから別のフォルダへ、ファイルを移動させる作業を行っている人がいるかもしれません。そんな時、フォルダ内のファイルを移動させるスクリプトがあると重宝します。

今回は、フォルダ内にあるファイルを、別のフォルダに移動させるスクリプトの作り方について書いてみます。実行環境は下記です。

実行環境

  • Windows10 64bit
  • Python 3.7

今回使用するライブラリ

ファイルを移動させるにあたり、今回使用するライブラリは、以下です。

  • os
  • shutil

現在のファイルパスを確認したり、対象ファイルがフォルダであるかどうかを確認したり、ファイルを移動させる処理などのために使用します。

ファイル移動スクリプトのイメージ

スクリプトのイメージは以下の通りです。すべてのファイルを移動させてしまうと、一部のファイルのみで良い場合もあるかと思いますので、あるファイル名のものだけを選んで移動させるスクリプトで考えてみます。

  • 移動元のフォルダパスを設定できる
  • 移動先のフォルダパスを設定できる
  • 移動させるファイル名の条件を設定できる

順番に書いていく

それでは、今回のスクリプトを順番に作っていきましょう。

まずは、ライブラリのインポート

まずは、今回のファイル移動のために必要なライブラリをインポートしましょう。標準パッケージ内のため、通常通りpythonをインストールした場合は、追加のインストール作業は不要かと思います。

万が一、インストールされていない場合は、以下の記事を参考にインストールを試みて下さい。

ただし、さきほども記載したようにプリインストールされるライブラリのため、pythonのインストールに失敗している可能性がありますので、pythonそのものの再インストールもお試しになると良いかと思います。もちろん、python自体のバージョンもご確認ください。

プログラムを実行しているフォルダの確認

次に、プログラムを実行しているフォルダがどこの階層であるかを以下のコードで確認します。取得しているパスは、絶対パスです。

プログラムでフォルダパスを実行している理由は、スクリプトとフォルダを両者の位置関係を変えず移動させることで、どこに移動させてもスクリプト自体に修正が入らなくも良いことを意図したものです。

スクリプトを移動させても、常に同じ箇所を対象とするんだ!という方は、上記の一文を使わず対象フォルダの絶対パスをそのまま設定すると良いかと思います。

移動元、移動先フォルダパスの設定

移動元、移動先のフォルダを設定します。さきほど取得した、プログラムを実行しているフォルダパスと連結させて使用しています。

対象ファイル名の設定

最後に対象ファイル名の設定です。今回は、わかりやすく「移動したいファイル」をファイル名に持つファイルを移動させようと思います。

今回のメイン、ファイル移動の処理

さて、今回の記事のメインの処理です。パッと見てややこしそうですが、そこまで難しいものではありません。順に説明します。

対象フォルダ内にあるファイルを確認する

以下の、コードで対象フォルダ内にあるファイルを確認します。

以下の一文ですが、与えたフォルダパス内にあるファイルと、フォルダの一覧をリストとして返します。

リストとして取得したファイルやフォルダをfor文を使ってひとつひとつ取り出しているのです。

ただし、そのまますべてを移動対象としてしまうと、フォルダも含まれているため、ここからフォルダを除外させないといけません。

ファイルかどうかの判定

そこで以下の一文を追加し、ファイルであるかどうかを判定します。フォルダの場合はfalseとなり、処理の対象外となります。

対象のファイル名を探す

次に、このままではすべてのファイルが対象となってしまうため、リストの中から、想定している対象のファイルを探さなくてはなりません。そのためのコードが以下の一文です。

ファイル移動の処理

いくつかの確認が終わり、最後にファイルを移動させる処理を記載します。移動元のファイルパスと、移動先のファイルパスを与えてあげることで、ファイル移動が実現します。

また、どのファイルを移動させたのかがわかるようにprint()メソッドで画面出力をさせています。

作ったスクリプトの実行

それでは、作ったスクリプトを実行してみましょう。移動元のフォルダと、移動先のフォルダとして、2つフォルダを作成します。

それぞれのフォルダの定義は、下記の通りです。

  • src・・・ファイル移動元のフォルダ
  • dst・・・ファイル移動先のフォルダ

以下の通り作成しました。スクリプトに記載しているフォルダ名と間違えないようにしましょう。

フォルダの準備

移動元フォルダ「src」には、4つのフォルダを配置しました。今回対象とするのは、そのうち「移動したいファイル」のファイル名を持つファイルのため、3つのファイルが対象です。移動先フォルダ「dst」は空っぽです。

実行前「src」フォルダ
実行前「dst」フォルダ

実行すると…

ちゃんと出力がされていますね。対象外の「移動したくないファイル_1.txt」が無視されているのが分かるかと思います。

スクリプトを実行した様子

対象フォルダも念の為確認

対象フォルダ内もちゃんと移動できているか確認します。

実行後「src」フォルダ
実行後「dst」フォルダ

両フォルダともに問題なさそうですね。ちゃんと移動できています。

ファイル移動スクリプトの全文

さて、以下が今回作成したファイルを移動させるスクリプトの全文です。そこまで長くはないと思います。移動元のフォルダパスと、移動先のフォルダパスを書き換えることでいろんな場合に利用することが可能です。

この記事が誰かのお役に立てれば幸いです。それでは。