我试图在没有缓冲区的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
感谢
答案 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,它将是"就像"它是无缓冲的