Pythonで排他ロックしてファイルに書き込む
排他ロックとは?
排他ロックしてファイルを壊れ難くしてみます。
目次
排他ロックしてファイルに書き込む
Pythonではfcntl
モジュール(2.x)(3.x)を利用します。
※WindowsではサポートされていないのでWindowsでは動作しません。
※r+
の読み書きモードでは新たにファイルは作られません。あらかじめカラのtest.txt
を用意します。
# -*- coding: utf-8 -*- import fcntl, os filename = 'test.txt' # ファイルを読み書きモードで開く with open(filename, 'r+') as f: try: # ファイルを排他ロックする fcntl.flock(f, fcntl.LOCK_EX) # ファイルから読み込む data = f.readlines() # ファイルを切り詰める f.truncate(0) # ファイルの位置をリセット f.seek(os.SEEK_SET) # データを加える data.append('hoge\n') # ファイルに書き込む f.writelines(data) except IOError: print('flock() failure')