元セブ島在住のエンジニアの僕「Tommy」が、プログラミング・英語・セブ事情を発信するブログ

Tommy's blog

【Python】ディレクトリの作成と削除の方法【→プログラミング初心者向け】

2月 17, 2020

プログラム女子
Pythonで、サーバにフォルダを作ったり、消したりすることってできるんですか?
できるよ。Linuxではフォルダのことをディレクトリと言ったりするんだけど、Pythonでは何種類かの方法があるから、それを紹介するね。
Tommy

この記事で分かること

  • Pythonプログラムでフォルダ(ディレクトリ)の作成と削除の方法が分かる
  • 3種類のフォルダ(ディレクトリ)の作成と削除の方法が分かる

Pythonでのディレクトリ作成と削除の概要

この記事では、ディレクトリ(フォルダ)の作成と削除を行う方法と、ディレクトリが存在するかどうかの確認を行うPythonプログラムの方法を説明します。

ディレクトリの作成と削除には色々な方法がありますが、ここでは、下記の3つのディレクトリ作成と削除の方法を解説します。

1.osライブラリを使った方法
2.shutilライブラリを使う方法
3.linuxコマンドを使う方法

Pythonでのディレクトリ作成と削除の前提環境

Pythonのディレクトリの作成と削除と確認の環境は、下の記事で説明している私の環境と同じ環境で確認しています。レンタルサーバなどのlinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。

もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

Pythonを使ったディレクトリ作成と削除サンプルプログラム

ここでは、ディレクトリ作成と削除する3つの方法のサンプルプログラムとその実行結果を説明します。

  1. ディレクトリ作成・削除の方法(osライブラリを使う方法)
  2. ディレクトリ作成・削除の方法(shutilライブラリを使う方法)
  3. ディレクトリ作成・削除の方法(Linuxコマンドを使う方法)

1.ディレクトリ作成・削除の方法(osライブラリを使う方法)

初めのサンプルプログラムでは、Pythonの「osライブラリ」を使って、ディレクトリの作成と削除を行います。

ディレクトリ作成と削除のサンプルプログラム作成(osライブラリを使う方法)

osライブラリを使ってディレクトリの作成と削除をする方法は次の2つの手順で説明することができます。

  • osライブラリのインポートの実装
  • ディレクトリ作成と削除処理の実装
osライブラリのインポートの実装

ディレクトリの作成と削除をする為の osライブラリのインポートを行います。

import os

「os」ライブラリを「import」コマンドでインポートする

ディレクトリ作成と削除処理の実装

サンプルプログラムでは、現在(カレント)のディレクトリに、test_dirという名前のディレクトリを作成し、その後削除するというプログラムを考えます。

ディレクトリを作成する為には、関数 os.mkdirを呼び出します。また、ディレクトリを削除する為には、関数 os.rmdirを呼び出します。

それぞれの結果を確認する為に、ディレクトリを作成した直後とディレクトリを削除した直後に、os.path.existsを呼び出しています。

if __name__ == '__main__':

new_dir = '.\test_dir'

os.mkdir(new_dir)
print(os.path.exists(new_dir))

os.rmdir(new_dir)
print(os.path.exists(new_dir))

  1. 変数「new_dir」に新規ディレクトリ「test_dir」定義します。
  2. osライブラリの「mkdir」関数でディレクトリを作成します。
  3. osライブラリの「path.exists」関数によって新規作成したディレクトリの存在を確認
  4. osライブラリの「rmdir」関数でディレクトリを削除
  5. osライブラリの「path.exists」関数によって新規作成したディレクトリの存在を確認

ディレクトリ作成と削除処理の実行結果(osライブラリを使う方法)

上のプログラムを実行した結果は、下のようになります。

$ python test.py
True
False

os.mkdirによるディレクトリを作成する後では、ディレクトリが存在するTrueが「os.path.exists」関数から返却され、ディレクトリが存在していることが分かります。

その後、os.rmdirによって、削除されている為、Falseが「os.path.exists」関数から返却され、ディレクトリが正常に削除されていることが分かります。

2.ディレクトリ作成・削除の方法(shutilライブラリを使う方法)

前のプログラムのosライブラリを使う方法では、ディレクトリ内にファイルが存在していた場合には、ディレクトリを削除することができませんでした。今回はこれに対応する為に、削除したいディレクトリ内にファイルが残っていても、強制的に削除する方法を説明します。

ディレクトリ作成と削除のサンプルプログラム作成(shutilライブラリを使う方法)

shutilライブラリを使ってディレクトリ作成と削除を行う方法は次の2つの実装で実現することができます。

  • shutilライブラリのインポート処理の実装
  • ディレクトリ作成と削除処理の実装
shutilライブラリのインポート処理の実装

まずは、中のファイルを含めて、ディレクトリを削除するライブラリshutilをインポートします。

import os
import shutil

  1. 「os」ライブラリを「import」コマンドでインポートする
  2. 「shutil」ライブラリを「import」コマンドでインポートする

ディレクトリ作成と削除処理の実装

ディレクトリの作成に関しては、先ほどと同様に、関数os.mkdirを使いますが、ディレクトリの削除は、shutilというライブラリの rmtree関数を使います。今回も、ディレクトリの存在を確認する為にos.path.existsを作成と削除の直後に呼び出します。

if __name__ == '__main__':

new_dir = '.\test_dir'

os.mkdir(new_dir)
print(os.path.exists(new_dir))

shutil.rmtree(new_dir)
print(os.path.exists(new_dir))

  1. 変数「new_dir」に新規ディレクトリ「test_dir」定義します。
  2. osライブラリの「mkdir」関数でディレクトリを作成します。
  3. osライブラリの「path.exists」関数によって新規作成したディレクトリの存在を確認
  4. shutilライブラリの「rmtree」関数でディレクトリを削除
  5. osライブラリの「path.exists」関数によって新規作成したディレクトリの存在を確認

ディレクトリ作成と削除の処理結果(shutilライブラリを使う方法)

上のプログラムを実行した結果は、下のようになります。

$ python test.py
True
False

先ほどと同様に、ディレクトリを作成した後の 「shutil.rmtree」による削除でも「os.path.exists」からFalseが返却されていることから、ディレクトリが正常に削除されていることが分かります。

3.ディレクトリ作成・削除の方法(Linuxコマンドを使う方法)

最後の方法は、「Linuxコマンド」を用いて、ディレクトリの作成や削除を行う方法を紹介します。これは「LinuxOS本来のコマンドをPythonから使う」という趣旨の処理になり、恒久的にディレクトリの作成と削除を行うことができます。ただし、「Pythonを動かしているOSがLinuxである場合にのみこの方法を使うことができる」といった制限事項もあります。

ディレクトリ作成と削除のサンプルプログラム作成(Linuxコマンドを使う方法)

Linuxコマンドを使って、ディレクトリ作成と削除を行うには、次の2つの実装が必要になります。

  • commandsライブラリインポート処理の実装
  • ディレクトリ作成と削除の処理の実装
commandsライブラリインポート処理の実装

Linuxコマンドを使う為に、commandsライブラリをインポートします。

import os
import commands

  1. 「os」ライブラリを「import」コマンドでインポートする
  2. 「commands」ライブラリを「import」コマンドでインポートする

ディレクトリ作成と削除の処理の実装

PythonでLinuxコマンドを実行する為には、「commands」ライブラリの「getoutput」関数を使います。Linuxのディレクトリの作成のコマンドは「mkdir」である為、Linuxコマンドを実行する関数「commands」ライブラリの「getoutput」関数の初めの引数は「rmdir .\test_dir」になります。

また、Linuxのディレクトリの削除のコマンド「rm -rf」である為、2番目の「commands」ライブラリの「getoutput」関数の引数は、「rm -rf .\test_dir」になります。こららをそれぞれ実行し、ディレクトリの存在を確認する為にos.path.existsを作成と削除の直後に呼び出します。

if __name__ == '__main__':

new_dir = '.\test_dir'

commands.getoutput('mkdir '+new_dir)
print(os.path.exists(new_dir))

commands.getoutput('rm -rf '+new_dir)
print(os.path.exists(new_dir))

  1. 変数「new_dir」に新規ディレクトリ「test_dir」定義します。
  2. commandsライブラリの「getoutput」関数で、Linuxコマンド「mkdir」を使いディレクトリを作成します。
  3. osライブラリの「path.exists」関数によって新規作成したディレクトリの存在を確認します。
  4. commandsライブラリの「getoutput」関数で、Linuxコマンド「rm -rf」を使いディレクトリを削除します。
  5. osライブラリの「path.exists」関数によって新規作成したディレクトリの存在を確認します。

Pythonで使えるLinuxのコマンドは、ディレクトリの生成と削除だけではありません。その他のLinuxコマンドもPythonから実行することができます。その他のLinuxコマンドをPythonから使う方法については、下記の記事で詳しく解説していますので、PythonからのLinuxコマンドの実行方法について知りたい方は下記の記事を読んで下さい。

また、本記事で使用したディレクトリの作成や削除を実施する「mkdir」や「rm」などのLinuxコマンド自体について知りたい場合は、下の記事で説明していますので、合わせて読んでください。

ディレクトリ作成と削除の処理結果(Linuxコマンドを使う方法)

上のプログラムの実行結果は下のようになります。

$ python test.py
True
False

Linuxコマンドを使った削除を使った例でも、上の2つの実行結果と同様に、ディレクトリの作成と削除は正常に行われていることが分かります。

Pythonのその他「初心者向け」技術)

その他のPythonプログラムの「基礎知識」を下記の記事にまとめています。