在python 3上写无缓冲

时间:2016-05-26 13:17:34

标签: python pycharm

我试图在没有缓冲区的python上创建一个文件,所以在我使用write()的同时编写它。但由于某种原因,我得到了一个错误 这是我使用的线路:

my_file = open("test.txt", "a", buffering=0) my_file.write("Testing unbuffered writing\n")

这就是我得到的错误:
my_file = open("test.txt", "a", buffering=0) ValueError: can't have unbuffered text I/O

无论如何,对文件进行无缓冲写入? 我在pyCharm上使用python 3 感谢

2 个答案:

答案 0 :(得分:4)

错误不是来自Pycharm。

Python文档说:

  

buffering是一个可选的整数,用于设置缓冲策略。   传递0以关闭缓冲(仅允许在二进制模式下)

您的代码可以在 Python 2 中使用,但不能在 Python 3 中使用。因为字符串是 Python 3 中Unicode代码点的不可变序列。你需要这里的字节。在 Python 3 中,您需要在无缓冲模式下将您的unicode str转换为bytes

my_file.write("Testing unbuffered writing\n".encode("utf-8"))

答案 1 :(得分:2)

使用

my_file = open("test.txt", "a")
my_file.write("Testing unbuffered writing\n")
my_file.flush()

在写入之后总是立即调用flush,它将是"就像"它是无缓冲的