ファイルを削除するには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()
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モジュールとうまく使い分けていきたいです。