在python 3上写无缓冲

rad*_*led 0 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。
谢谢

Vor*_*ung 6

my_file = open("test.txt", "a")
my_file.write("Testing unbuffered writing\n")
my_file.flush()
Run Code Online (Sandbox Code Playgroud)

始终在写入后立即调用flush,它将“好像”它是无缓冲的

  • 最好使用`with open("test.txt", "a") as my_file:`,它会在离开该上下文时关闭并刷新。 (2认同)

qvp*_*ham 5

该错误不是来自Pycharm。

从Python文档中:

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

您的代码仅适用于Python 2,而不适用于Python 3。因为字符串Python 3中Unicode代码点的不可变序列。您需要在这里有字节。要在Python 3中做到这一点,您可以将unicode转换strbytesunbuffered模式。

例如:

my_file.write("Testing unbuffered writing\n".encode("utf-8"))
Run Code Online (Sandbox Code Playgroud)