Python записывает строку в файл и сохраняет \ r - PullRequest
1 голос
/ 19 сентября 2019

В python (2.7 или 3), скажем, у меня есть строка с \r, и я хочу записать ее в файл и сохранить \r.Поведение по умолчанию - заменить \r на \n.Как я могу это сделать?Например:

f= open("file.txt","w+")
f.write('foo\rbar')
f.close()

Оставляет мне файл с текстом foo\nbar.Я читал об универсальной обработке новой строки, и я думаю, что я могу использовать newline='' в качестве опции для open() при открытии файла с \r, если я хочу сохранить \r.Но write() не принимает опцию newline, и я в растерянности.

У меня есть приложение, в котором значение \r имеет значение, отличное от \n.И мне нужно иметь возможность писать в файл и сохранять \r как есть.

Ответы [ 4 ]

2 голосов
/ 19 сентября 2019

Откройте файл в двоичном режиме, добавив b к режиму, который вы хотите использовать.

with open("file.txt","wb") as f:
    f.write(b'foo\rbar')

Лучше использовать with open... вместо того, чтобы открывать и закрывать файл самостоятельно.

0 голосов
/ 20 сентября 2019

Вы можете открыть файл с помощью newline='', чтобы при выводе перевод не выполнялся.Метод write не имеет параметра newline, поскольку объект файла уже инициализирован с ним:

with open('file.txt', 'w', newline='') as f:
    f.write('foo\rbar')

Выдержка из документации :

При записи вывода в поток, если newline равно None, любые записанные символы '\n' преобразуются в системный разделитель строк по умолчанию, os.linesep.Если newline равно '' или '\n', перевод не выполняется.

0 голосов
/ 19 сентября 2019

Очевидно, что у каждого есть свои предпочтения.

Я просто добавлю r к вашему коду, чтобы сделать строку необработанной строкой:

f= open("file.txt","w+")
f.write(r'foo\rbar') # right before the string
f.close()

И вы хорошиидти.

0 голосов
/ 19 сентября 2019

чтение и запись в двоичном формате.

f= open("file.txt","wb")
f.write(b'foo\rbar')
f.close()
...