classの初期化の際にあらかじめ出力ファイルを作っておき、他のメソッドがそのファイルに追記する形で利用したら便利かなという状況に出くわしました。
ということで中身が空のファイルを作る必要が生じたのですが、調べたところopenで開いて何もせずにcloseで閉じる、ただそれだけでOKでした。
しかしまあ、Linuxのtouchコマンドに相当するものがあったらもっと見た目がスッキリするのに、そう思いましてもう少しだけ調べることにしました。
で、やっぱりありました。こちらで紹介されています。pathlibモジュールのPathクラスのtouchメソッドです。使い方も簡単でした。
>>> from pathlib import Path >>> Path("test.txt").touch()
パーミッションはtouchのmode引数で与えられます。デフォルトではmode=0o666と公式のドキュメントには書いてあるのですが、何故か手元で確認したら0o664、所有者とグループ以外は読み込み専用、でした。不思議だ。
唯一惜しむらくはPython3.4以降でしか使えない点です。その辺りの諸事情で結局初めのopenとcloseの組み合わせに落ち着きました。
import os def touch(path): if os.path.isfile(path): pass else: with open(path, "w", encoding="UTF-8") as f: pass