前回のおさらい
過去5回に渡って、osモジュールとshutilモジュールを比較するため、ファイル・フォルダ操作に関して解説をしています。
前回はshutilモジュールのうち、フォルダをコピーする方法 shutil.copytreeを解説しました。

今回はファイルを移動する方法と名前を変更する方法を解説していきます。
前回、色々とコピーしたのでフォルダ構造が結構複雑になっています。

ちょっと複雑すぎるので、folder3とfolder4を削除して、分かりやすくしておきましょう。

Pythonプログラムはos_module_test内に新しいものを作成し、shutilモジュールをインポートしておきます。
import shutil
ではでは始めていきましょう。
ファイル、フォルダの移動:shutil.move(“移動前”,”移動後”)
ファイルの移動
shutilモジュールを使って、ファイルやフォルダを移動するにはshutil.move(“移動前”,”移動後”)を使います。
まずはdocument3.txtをfolder2に移動してみましょう。
shutil.move("document3.txt", "./folder2")

特に問題なく、ファイルを移動させることができました。
フォルダの移動
次に同じコマンドでフォルダも移動できるか試してみましょう。
folder2をfolder1に移動させてみます。
これによりフォルダの中にファイルがあっても移動できるかもついでに確認してみましょう。
shutil.move("folder2", "./folder1")

folder1の中にfolder2を移動することができました。
ということはフォルダ内にファイルがあっても、shutil.moveでは問題なく移動できるということになります。
ファイル名・フォルダ名の変更
前にosモジュールのos.renameを紹介した際、os.renameではファイルやフォルダ名の変更ができる上、ファイルやフォルダの移動もできました。

実はshutil.moveはファイル・フォルダの移動だけではなく、逆にファイル・フォルダの名前の変更をすることができます。
まずはdocument1.txtをdocument5.txtに変更してみましょう。
shutil.move("document1.txt","document5.txt")

変更することができました。
次にフォルダ名も変更できるか試してみましょう。
フォルダに何かファイルが入っていてもフォルダ名を変更できるか試すため、folder2をfolder3に変更してみます。
shutil.move("folder2","folder3")

こちらも問題なく変更することができ、フォルダに何か入っていたとしてもshutil.moveでフォルダ名を変更できることが分かりました。
今回はshutil.moveを使ってファイル・フォルダの移動とファイル名・フォルダ名の変更をしてみました。
ほぼ同じことがosモジュールのos.renameでも可能です。
しかしos.renameではフォルダ内に何か入っている時、そのフォルダの名前は変更できますが、移動はできません。
それに対しshutil.moveではフォルダ内に何か入っているいないにかかわらず、そのフォルダの移動や名前の変更をすることができます。
同じ様なことができるにしてもちょっとずつできることが違ういい例だと思います。
次回はshutilモジュールを使ってフォルダの削除を解説していきます。

ということで今回はこんな感じで。
コメント