все Python 3Файлы и I/Oфункция
io.IOBase.writelines()
запись
Записывает все строки из итерируемого подряд. Разделители НЕ добавляет — '\n' должен быть в самих строках, иначе всё склеится в одну.
Синтаксис
f.writelines(lines)
Имя обманывает: метод ничего не знает про «строки» и просто вызывает write() для каждого элемента подряд. Он парный к readlines(), который сохраняет '\n' внутри элементов, поэтому f_out.writelines(f_in.readlines()) сохраняет разбиение на строки (байт в байт — только в бинарном режиме: в текстовом '\r\n' при чтении становится '\n'); а вот после splitlines() или strip() переводы строк придётся дописывать самому. На вход годится любой итерируемый объект — генератор, другой файл — а в бинарном режиме элементы должны быть bytes, иначе TypeError.
Примеры
lines = ['line1\n', 'line2\n', 'line3\n']
with open('out2.txt', 'w') as f:
f.writelines(lines)
with open('out3.txt', 'w') as f:
f.writelines(f'{i}\n' for i in range(5))
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности