Pythonでファイルを削除する方法について書いています。
下記のメソッド・関数を使って削除します。
・Path.unlinkメソッド
載せているサンプルコードはPythonのバージョン3.10.5で動作検証しました。
os.removeでファイルを削除する
osモジュールのremove関数でファイルを削除することができます。
公式ドキュメントではこちらに記載がありました。
例えば、下記のように使います。
from os import remove
remove("hello.txt")
最初にosモジュールからremove関数をインポートしています。
次の処理で、remove関数に削除したいファイルパスを渡しています。
これで、remove関数が実行されると指定したパスのファイルが削除されます。
今回は実行ディレクトリと同じ位置にある「hello.txt」ファイルを削除しています。
ファイルがないとき
ファイルがないときには、下記のようにエラーになります。
FileNotFoundError: [Errno 2] No such file or directory: 'hello.txt'
FileNotFoundError
が発生しました。
ファイルまたはディレクトリが見つからないというエラーになりました。
これを回避するためには、先にファイルがあるか確認すると良いです。
下記のようにすることで、ファイル削除前に存在するか確認することができます。
from os import remove
from os.path import isfile
if isfile("hello.txt"):
remove("hello.txt")
isfile関数を使ってファイルがあるか確認しています。
ファイルがある場合はTrueになるので、配下のremove関数が実行されて、ファイルが削除されます。
ファイルがない場合は、remove関数は実行されないためエラーになりません。
Path.unlinkでファイルを削除する
Pathクラスのunlinkメソッドでファイルを削除することができます。
公式ドキュメントではこちらに記載がありました。
例えば、下記のように使います。
from pathlib import Path
path = Path("hello.txt")
path.unlink()
pathlibモジュールからPathクラスをインポートしています。
次の処理でPathクラスのコンストラクタにファイルのパスを渡して、pathオブジェクトを作成しています。
そして、pathからunlinkメソッドを呼ぶことで、ファイルが削除されます。
削除されるのは、Pathクラスに渡したパスのファイルです。
ファイルがないとき
こちらもファイルがないときには、下記のようにエラーになります。
FileNotFoundError: [Errno 2] No such file or directory: 'hello.txt'
ファイルがないときには、同じようにFileNotFoundError
が発生しました。
こちらもPathクラスのメソッドを使って、存在を確認することにより回避することが可能です。
from pathlib import Path
path = Path("hello.txt")
if path.is_file():
path.unlink()
先ほどの処理に、if文でファイルの存在を確認する処理を入れました。
pathオブジェクトからis_fileメソッドを呼んでいます。
このis_fileメソッドがファイルがある場合にはTrue、ない場合にはFalseを返してくれます。
ある場合には、if文の配下の処理が行われるので、unlinkメソッドが実行されてファイルが削除されます。
絶対パス・相対パスについて
今回os.remove関数やPathクラスには、削除したいファイルパスを相対パスで渡しました。
このファイルパスはルートディレクトリから指定して、下記のように絶対パスで指定することも可能です。
from os import remove
remove("/Users/xxx/python-test/hello.txt")
remove関数・unlinkメソッドのどちらでも、絶対パスで削除できることを確認しました。
おわりに
今回はPythonでファイルを削除する方法について確認しました。
osモジュールのremove関数と、pathlibモジュールのPathクラス(unlink)を使うことで、削除することができました。
個人的にはPathクラスの方が処理が見やすくなるので、こちらを優先して使うと良いのかなと感じました。
コメント