[Python] ファイル・ディレクトリの削除(os.remove、os.unlink、os.rmdir)

Python ファイル操作

ファイルを削除するにはos.remove()やos.unlink()を使います。また、ディレクトリはrmdir()を使いますが、中にファイルが入っている場合はshutilモジュールを使ったほうが便利です。本記事ではこれらの関数の使い方についてまとめます。

確認した環境

  • OS: Ubuntu16.04LTS
  • Python 3.7.2

本記事で前提とするディレクトリ構成

 $ tree
 .
 ├── file01.txt
 ├── sample
 │   └── file02.txt
 └── sample_empty

ファイルの削除

osモジュールでファイルを削除する関数は以下2つあります。

以下、それぞれ示します。

os.remove()

os.remove()は、引数に指定したファイルpathを削除します。

>>> import os
>>> os.remove('./file01.txt')

 path がディレクトリの場合、OSError が送出されます。ディレクトリを削除する場合は、次項のrmdir()を使います。

>>> os.remove('./sample')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IsADirectoryError: [Errno 21] Is a directory: './sample'

os.unlink()は上記remove()関数と等価です。公式リファレンスによると、unlink の名前は伝統的な Unix の関数名とのこと。

>>> import os
>>> os.unlink('./file01.txt')

ディレクトリの削除

os.rmdir()は、引数に指定したディレクトリpathを削除します。

>>> import os
>>> os.rmdir('./sample_empty')

この関数はディレクトリが空の場合にだけ正常に動作します。ディレクトリの中にファイルがある場合は、OSErrorが送出されます。

>>> os.rmdir('./sample')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: './sample'

尚、ファイルが入ったディレクトリツリー全体を削除するには shutil.rmtree() を使います。

<関連記事>

まとめ

osモジュールを使ったファイル・ディレクトリの削除方法についてまとめました。shutilモジュールとうまく使い分けていきたいです。

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

シェアする
ひびきをフォローする
Hbk project