Я хочу записать текстовые файлы с окончаниями строки DOS/Windows '\r\n' использование Python, работающего на Linux. Мне кажется, что должен быть лучший путь, чем ручное помещение '\r\n' в конце каждой строки или использования строки конечная утилита преобразования. Идеально я хотел бы смочь сделать что-то, любят, присваивают os.linesep разделитель, который я хочу использовать при записи файла. Или укажите разделитель строки, когда я открою файл.
Просто напишите файл, подобный файлу, который обертывает другой файл и преобразует \ n
- \ r \ n
при записи.
Например:
class ForcedCrLfFile(file):
def write(self, s):
super(ForcedCrLfFile, self).write(s.replace(r'\n', '\r\n'))
Для 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
вы можете посмотреть этот PEP для справки.
Обновление:
@OP, вы можете попробовать создать что-то вроде этого
import sys
plat={"win32":"\r\n", 'linux':"\n" } # add macos as well
platform=sys.platform
...
o.write( line + plat[platform] )
Вы можете написать функцию, которая преобразует текст, а затем записывает его. Например:
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()