+def atomic_write(path, text, do_append=False):
+ """Atomic write of text to file at path, appended if do_append is set."""
+ path_tmp = path + io_db["tmp_suffix"]
+ mode = "w"
+ if do_append:
+ mode = "a"
+ if os.access(path, os.F_OK):
+ shutil.copyfile(path, path_tmp)
+ file = open(path_tmp, mode)
+ file.write(text)
+ file.flush()
+ os.fsync(file.fileno())
+ file.close()
+ if os.access(path, os.F_OK):
+ os.remove(path)
+ os.rename(path_tmp, path)
+
+