Используя Python для записи текстовых файлов с окончаниями строки DOS на Linux

Я хочу записать текстовые файлы с окончаниями строки DOS/Windows '\r\n' использование Python, работающего на Linux. Мне кажется, что должен быть лучший путь, чем ручное помещение '\r\n' в конце каждой строки или использования строки конечная утилита преобразования. Идеально я хотел бы смочь сделать что-то, любят, присваивают os.linesep разделитель, который я хочу использовать при записи файла. Или укажите разделитель строки, когда я открою файл.

19
задан gaumann 15 April 2010 в 01:05
поделиться

4 ответа

Просто напишите файл, подобный файлу, который обертывает другой файл и преобразует \ n - \ r \ n при записи.

Например:

class ForcedCrLfFile(file):
    def write(self, s):
        super(ForcedCrLfFile, self).write(s.replace(r'\n', '\r\n'))
3
ответ дан 30 November 2019 в 01:54
поделиться

Для Python 2.6 и более поздних версий функция open в модуле io имеет необязательный параметр новой строки, который позволяет вам указать, какие новые строки вы хотите использовать.

Например:

import io
with io.open('tmpfile', 'w', newline='\r\n') as f:
    f.write(u'foo\nbar\nbaz\n')

создаст файл, содержащий следующее:

foo\r\n
bar\r\n
baz\r\n
76
ответ дан 30 November 2019 в 01:54
поделиться

вы можете посмотреть этот PEP для справки.

Обновление:

@OP, вы можете попробовать создать что-то вроде этого

import sys
plat={"win32":"\r\n", 'linux':"\n" } # add macos as well
platform=sys.platform
...
o.write( line + plat[platform] )
2
ответ дан 30 November 2019 в 01:54
поделиться

Вы можете написать функцию, которая преобразует текст, а затем записывает его. Например:

def DOSwrite(f, text):
    t2 = text.replace('\n', '\r\n')
    f.write(t2)
#example
f = open('/path/to/file')
DOSwrite(f, "line 1\nline 2")
f.close()
0
ответ дан 30 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: