我想用Python的打印功能进行原子写。我已经找到了这个答案:
How can I do an atomic write to stdout in python?
但这使用sys.stdout.write。我想更灵活一些,而改用打印。当我用print实现相同的代码时,显然这很重要,因为我的输出结果是不正确的。
lock = Lock()
def synced_out(*inp):
with lock:
print(*inp, file=args.out, sep=args.field_seperator)
显然,我使用print而不是sys.stdout.write
很重要。
此处提供完整代码,如果您认为这不可能,那么我可能在做其他错误:
在损坏的情况下,文件为sys.stdout,但是我一直在使用重定向并将其发送到文件中。但是,我想保留--out标志,以便对“>文件不太了解的人们也可以使用它,或者如果它与管道一起使用,则只需保持这种灵活性即可。
Python 3.5.2
Linux Ubuntu 16.04