Я хочу сделать атомарную запись с помощью функции печати Python.Я уже нашел этот ответ:
Как мне сделать атомарную запись в stdout в python?
Но для этого используется sys.stdout.write.Я хочу быть более гибким и использовать вместо этого печать.Когда я реализовал тот же код с печатью, очевидно, это имеет значение, так как мой вывод оказался неверным.
lock = Lock()
def synced_out(*inp):
with lock:
print(*inp, file=args.out, sep=args.field_seperator)
Очевидно, имеет значение, что я использую печать, а не sys.stdout.write
.
Полный код здесь, если вы ожидаете, что это невозможно, и я могу сделать что-то еще не так:
https://termbin.com/s9ox
В случае повреждения файл был sys.stdout, но я все равно использовал перенаправление и отправлял его в файл.Однако я хочу сохранить флаг --out, чтобы люди с меньшим пониманием «> файла» могли также использовать его, или, если он используется с конвейером, просто поддерживая эту гибкость.
Python 3.5.2
Linux Ubuntu 16.04