我试图在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。
谢谢
发布于 2016-05-26 13:35:17
错误不是来自Pycharm。
来自Python文档:
缓冲是一个可选的整数,用于设置缓冲策略。传递0以关闭(仅在二进制模式下允许)
您的代码只在Python2中工作,而在Python3中不工作。因为字符串是Python3中不可变的Unicode代码点序列。这里需要有字节。要在Python3中这样做,您可以在非缓冲模式下将您的unicode str
转换为bytes
。
例如:
my_file.write("Testing unbuffered writing\n".encode("utf-8"))
发布于 2016-05-26 13:29:50
使用
my_file = open("test.txt", "a")
my_file.write("Testing unbuffered writing\n")
my_file.flush()
总是在写完之后立即调用刷新,这样就会“好像”它没有缓冲。
https://stackoverflow.com/questions/37462011
复制相似问题