2016-05-26 4 views
0

Я пытаюсь создать файл на 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

Существует в любом случае сделать небуферизованную запись на файл? Я использую python 3 на pyCharm.
БлагодаряНапишите небуферизованный на python 3

+0

Вы можете писать только небуферизованные в двоичном режиме - https://docs.python.org/3/library/functions.html#open – Moe

ответ

4

Ошибка не из PyCharm.

Питон док говорит:

буферизация является необязательным целым числом, используемым для установки политики буферизации. Pass 0, чтобы переключить буферные от (допускается только в двоичном режиме)

Ваш код будет работать в Python 2, но не в Python 3. Поскольку строки являются неизменяемыми последовательностями кодовых точек Юникода в Python 3. Здесь вам понадобятся байты. В Python 3 вам нужно преобразовать ваш unicode str в bytes в небуферизованном режиме.

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

использование

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

Всегда называющие вровень сразу после записи, и это будет «как если бы» это небуферизован

Смежные вопросы