Pythoのosモジュールとshutilモジュールによるファイル操作を比較してみた

目次

osモジュールとshutilモジュール

これまで7回に渡って、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.renameshutil.move
名前の変更os.renameshutil.move
コピーなしshutil.copyfile
削除os.removeなし

フォルダ操作

フォルダ内部に
ファイル等の有無
osモジュールshutilモジュール
作成os.mkdirなし
移動os.renameshutil.move
なしshutil.move
名前の変更os.renameshutil.move
os.renameshutil.move
コピーなしshutil.copytree
なしshutil.copytree
削除os.rmdirshutil.rmtree
なしshutil.rmtree

まとめ

7回に渡って、osモジュール、shutilモジュールを解説し、最後に二つのモジュールを比較してみました。

Pythonでデータ解析をする際、ファイル操作は欠かせないものなので、参考になるのではないかなと思います。

こうやって眺めてみると、ファイルがあろうがなかろうが移動だったり、削除だったりしてくれるshutilモジュールの方が高機能に見え、こちらばかりを使いたくなってしまうかもしれません。

しかし時には機能を制限することによって、予想外の事態を起こさないこと、また予想外の事態が起こった時、被害を抑えるという考え方も必要かと思います。

そのため必要以上の機能をプログラムに盛り込まないという判断もありではないでしょうか。

今回のosモジュールとshutilモジュールの比較がそんな感じでみなさんの役に立ってくれたらいいなぁと思っています。

ということでosモジュールとshutilモジュールの比較は一旦これにて終了にしたいと思います。

ではでは今回はこんな感じで。

よかったらシェアしてね!

コメント

コメントする

目次
閉じる