フォルダの作成:os.mkdir()
前にosモジュールを使って、フォルダ間の移動やファイル名の取得を行いました。
そこまで解説しておきながら、フォルダを作成したり、削除したりの方法を解説していないことに今頃になって気づきました。
ということで今回はフォルダの作成、フォルダの削除に関して解説していきたいと思います。
まずはフォルダの作成に関してです。
今回もosモジュールを使うということで最初にosモジュールをインポートする必要があることを忘れないように注意してください。
import os
ではまずは前回行った現在のパスの取得をos.getcwd()で行ってみます。
import os
print(os.getcwd())
実行結果
/Users/username/Desktop/Python
ではここにtestというフォルダを作ってみます。
フォルダを作成する場合は、os.mkdir(“フォルダ名”)を用います。
import os
os.mkdir("test")
実行結果
とりあえず実行結果は何もないように見えます。
ということで/Users/username/Desktop/Pythonのフォルダを目視で確認してみましょう。
「test」というフォルダが確かにできていました。
ちなみに「Untitiled.ipynb」は現在いじっているPythonのプログラムです。
mkdirというのは、make directoryの略のようです。
「make」はそのままの意味で「作成する」。
「directory」はディレクトリといい、フォルダの他の言い方になります。
フォルダの削除:os.rmdir()
先ほど、mkdirでフォルダを作成しました。
フォルダの削除はremove directoryということで、os.rmdir(“フォルダ名”)を使います。
import os
os.rmdir("test")
実行結果
こちらも実行結果には何も表示されませんので、目視で確認してみましょう。
確かに「test」フォルダは無くなっています。
フォルダ作成時によく出るエラー
ここでフォルダ作成時によく出る(よく出してしまうエラー)を紹介します。
まずは先ほど同様「test」という名前のフォルダを作成してみます。
import os
os.mkdir("test")
実行結果
これでフォルダが「作成された」状態になっています。
このまま再度同じプログラムを実行してみます。
import os
os.mkdir("test")
実行結果
---------------------------------------------------------------------------
FileExistsError Traceback (most recent call last)
<ipython-input-XX-XXXXXXXXXXXX> in <module>
1 import os
2
----> 3 os.mkdir("test")
FileExistsError: [Errno 17] File exists: 'test'
同じプログラムを実行したはずなのに、エラーが出てしまいました。
最後の行をよく見てみると「File exists: ‘test’」ということで、「testというフォルダはもうあるから、作成できません」というエラーだと分かります。
ということでフォルダを作成する際には、今、自分がどこにいて、どういうフォルダが存在しているのかを頭に描いておくことが重要になります。
フォルダ削除時によく出るエラー
次はフォルダ削除時によく出るエラーです。
先ほど作成した「test」フォルダの中に適当にファイルを入れます。
もし作るのが面倒な方はこちらからダミーのファイルをどうぞ。
「test」フォルダの中にファイルがある状態で、「test」フォルダを削除してみます。
import os
os.rmdir("test")
実行結果
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-XX-XXXXXXXXXXXX> in <module>
1 import os
2
----> 3 os.rmdir("test")
OSError: [Errno 66] Directory not empty: 'test'
今度は「Directory not empty: ‘test’」というエラーが出ました。
これは「フォルダが空ではないので、削除できません」というエラーです。
ということでor.rmdir()はフォルダが空でないと削除できないのです。
空でないフォルダを削除する方法 その1:ファイルを削除する os.remove()
空でないフォルダを削除できないということは、フォルダの中身を空にして、それからフォルダを削除すればよいということです。
ということでファイルをまず消してみます。
ファイルを消すのはos.remove(“削除するファイル名”)です。
import os
os.remove("./test/dammytext.txt")
os.rmdir("test")
実行結果
dammytext.txtはtestフォルダの中にあるので、現在のフォルダを示す”./”を頭につけて、”./test/dammytext.txt”が削除するファイル名になるのを注意してください。
この方法により確かにフォルダを削除することができました。
しかし今回はファイルが一つだったから楽でしたが、ファイルが大量にある場合、一つ一つファイル名を指名していくのは手間が掛かります。
os.listdir(“./”)でファイル名を取得し、for文で一つずつ消していくという方法も考えられますが、1つのコマンドで削除する方法もあります。
空でないフォルダを削除する方法 その2: shutil.rmtree
空でないフォルダを削除するもう一つの方法はshutil.rmtreeというコマンドを用います。
このコマンドを使用するためにshutilをインポートする必要があります。
import os
import shutil
shutil.rmtree("test")
実行結果
たったこれだけで空ではないファイルを消すことができました。
今後色々なデータを扱うにあたり、データの仕分けをするためフォルダ分けすることになると思います。
その時のためにもフォルダの作成、削除は自由自在にできるようにしておきたいものです。
ということで今回はこんな感じで。
コメント