Pythonでtouchコマンドの実装方法

Unixのtouchコマンドは、指定されたファイルのアクセス・修正時刻を更新し、ファイルが存在しない場合は新しく作成します。Pythonでも同様の機能を簡単に実装できます。

pathlibの使用

Python 3.4以降では、pathlibモジュールのPath.touch()メソッドが利用可能です。このメソッドを使うことで、ファイルの存在を確認し、ない場合は作成してタイムスタンプを更新します。

使用例

from pathlib import Path
Path('myfile.txt').touch()

これにより、myfile.txtというファイルが存在しなければ作成され、すでに存在している場合はアクセス・修正時刻が更新されます。デフォルトで、ファイルパーミッションは777が設定されますが、touch()メソッドの引数で変更も可能です。

os.utime()の使用

os.utime()はファイルのアクセス・修正時刻を直接操作するためのメソッドです。os.utime()を使うと、ファイルが存在しない場合は、別途open()を使ってファイルを作成する必要があります。

使用例

import os
if not os.path.exists('myfile.txt'):
    open('myfile.txt', 'a').close()
os.utime('myfile.txt', None)

この方法でも、touchコマンドと同様の動作が実現できます。

結論

pathlibPath.touch()は、簡潔で推奨される方法ですが、古いバージョンのPythonを使用している場合や、カスタム処理が必要な場合はos.utime()が便利です。どちらの方法も、シンプルなファイル操作やタイムスタンプの更新に役立ちます。