атомарная запись с функцией печати Python - PullRequest
1 голос
/ 08 марта 2019

Я хочу сделать атомарную запись с помощью функции печати 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

...