Pythonでフォルダの作成と削除(mkdir、 rmdir、shutil.rmtree)

スポンサーリンク

フォルダの作成:os.mkdir()

前にosモジュールを使って、フォルダ間の移動やファイル名の取得を行いました。

Pythonのosモジュールによるフォルダ間移動とファイル名取得 〜絶対パスと相対パスの違いを添えて〜
フォルダ間移動前にcsvファイルの書き込みに関して説明しました。その際はプログラムと読み込むファイルは同じフォルダにある必要があり、また新規作成されるファイルは同じフォルダに作成されました。しかしプログラムとファイ...

そこまで解説しておきながら、フォルダを作成したり、削除したりの方法を解説していないことに今頃になって気づきました。

ということで今回はフォルダの作成、フォルダの削除に関して解説していきたいと思います。

まずはフォルダの作成に関してです。

今回も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つのコマンドで削除する方法もあります。

Pythonで繰り返し処理 for関数の超基本的な使用法
Pythonで繰り返し処理をするための関数Pythonで繰り返し処理するには、2つの関数が存在します。1つは今回紹介するfor関数で、もう1つはwhile関数です。簡単に違いをいうと、ある特定の回数の繰り返し処理す...
スポンサーリンク

空でないフォルダを削除する方法 その2: shutil.rmtree

空でないフォルダを削除するもう一つの方法はshutil.rmtreeというコマンドを用います。

このコマンドを使用するためにshutilをインポートする必要があります。

import os
import shutil

shutil.rmtree("test")

実行結果

たったこれだけで空ではないファイルを消すことができました。

今後色々なデータを扱うにあたり、データの仕分けをするためフォルダ分けすることになると思います。

その時のためにもフォルダの作成、削除は自由自在にできるようにしておきたいものです。

ということで今回はこんな感じで。

コメント

タイトルとURLをコピーしました