osモジュールとshutilモジュール
これまで5回に渡って、osモジュール、shutilモジュールの類似した機能を解説してきました。
今回はその総仕上げ。
osモジュールとshutilモジュールのまとめと比較をしていきます。
ということで早速始めていきましょう。
インポート
osモジュール、shutilモジュールともに使う前にインポートが必要です。
ということでインポートの仕方からおさらい。
#os module
import os
#shutil module
import shutilフォルダの作成
フォルダの作成はosモジュールのみあります。
#os module
import os
os.midir("foldername")
ファイル・フォルダの移動
ファイル・フォルダの移動はosモジュール、shutilモジュール共にあります。
#os module
import os
os.rename("before", "after")
#shutil module
import shutil
shutil.move("before", "after")ただしos.renameでフォルダを移動する際、フォルダは空である必要があります。
逆にshutil.moveではフォルダが空でなくても移動することができます。


ファイル名・フォルダ名の変更
ファイル名・フォルダ名の変更もosモジュール、shutilモジュール共にあります。
#os module
import os
os.rename("before", "after")
#shutil module
import shutil
shutil.move("before", "after")フォルダ名を変更する場合、osモジュール、shutilモジュール共に変更するフォルダが空でなくても変更することができます。


ファイルのコピー
ファイルをコピーする方法はshutilモジュールにのみあります。
#shutil module
import shutil
shutil.copyfile("before", "after")
フォルダのコピー
フォルダをコピーする方法もshutilモジュールのみあります。
#shutil module
import shutil
shutil.copytree("before", "after")shutil.copytreeではフォルダの中のファイルやフォルダもコピーしてくれます。
ファイルの削除
ファイルの削除はosモジュールのみあります。
#os module
import os
os.remove("filename")
フォルダの削除
フォルダの削除はosモジュール、shutilモジュールの両方にあります。
#os module
import os
os.rmdir("foldername")
#shutil module
import shutil
shutil.rmtree("foldername")os.rmdirではフォルダが空でない場合は削除できません。
shutil.rmtreeではフォルダが空でなくても削除することができます。

表にしてみた
ファイル操作
| osモジュール | shutilモジュール | |
| 移動 | os.rename | shutil.move |
| 名前の変更 | os.rename | shutil.move |
| コピー | なし | shutil.copyfile |
| 削除 | os.remove | なし |
フォルダ操作
| フォルダ内部に ファイル等の有無 | osモジュール | shutilモジュール | |
| 作成 | os.mkdir | なし | |
| 移動 | 無 | os.rename | shutil.move |
| 有 | なし | shutil.move | |
| 名前の変更 | 無 | os.rename | shutil.move |
| 有 | os.rename | shutil.move | |
| コピー | 無 | なし | shutil.copytree |
| 有 | なし | shutil.copytree | |
| 削除 | 無 | os.rmdir | shutil.rmtree |
| 有 | なし | shutil.rmtree |
まとめ
7回に渡って、osモジュール、shutilモジュールを解説し、最後に二つのモジュールを比較してみました。
Pythonでデータ解析をする際、ファイル操作は欠かせないものなので、参考になるのではないかなと思います。
こうやって眺めてみると、ファイルがあろうがなかろうが移動だったり、削除だったりしてくれるshutilモジュールの方が高機能に見え、こちらばかりを使いたくなってしまうかもしれません。
しかし時には機能を制限することによって、予想外の事態を起こさないこと、また予想外の事態が起こった時、被害を抑えるという考え方も必要かと思います。
そのため必要以上の機能をプログラムに盛り込まないという判断もありではないでしょうか。
今回のosモジュールとshutilモジュールの比較がそんな感じでみなさんの役に立ってくれたらいいなぁと思っています。
ということでosモジュールとshutilモジュールの比較は一旦これにて終了にしたいと思います。
ではでは今回はこんな感じで。

コメント