Если нам нужно написать новую строку в файл, мы должны ввести код:
file_output.write('Fooo line \n')
Есть ли причины, по которым у Python нет метода writeln()
?
Если нам нужно написать новую строку в файл, мы должны ввести код:
file_output.write('Fooo line \n')
Есть ли причины, по которым у Python нет метода writeln()
?
Было отказано в предоставлении симметричного интерфейса методов file
, и поскольку a writeln()
не имеет смысла:
read()
соответствует write()
: оба они работают с необработанными даннымиreadlines()
соответствует writelines()
: они работают на строках, включая их EOLreadline()
редко используется; итератор выполняет одно и то же задание (за исключением необязательного параметра size
)A writeline()
(или writeln()
) будет по существу таким же, как write()
, поскольку он не добавит EOL (чтобы соответствовать поведению writelines()
).
Лучший способ подражать print
в файле - использовать специальный синтаксис print-to-file для Python 2.x или аргумент ключевого слова file
функции print()
, как предположил Даниэль.
Лично я предпочитаю синтаксис print >>file, ...
над file.write('...\n')
.
В Python 2 используйте:
print >>file_output, 'Fooo line '
В Python 3 используйте:
print('Fooo line ', file=file_output)
print()
- это функция, которую вы ищете. Как и большая часть основного полиморфизма в python, печать обеспечивается встроенной функцией, а не с использованием методов (например, len()
, next()
, repr()
и т.д.!).
Функция print()
, являющаяся универсальным интерфейсом, также делает ее более универсальной, без того, что сами объекты файлов должны ее реализовать. В этом случае по умолчанию он заканчивается символом новой строки, но его можно выбрать в вызове функции, например:
print("text", file=sys.stderr, end="\n")
В вашем предполагаемом прецеденте все объекты файлов должны реализовать не только метод .write()
(теперь используемый print()
), но также .writeln()
и, возможно, даже больше! Этот функциональный полиморфизм делает python очень богатым, не обременяя интерфейсы (помните, как работает утиная печать).
Примечание. Эта модель всегда была в центре Python. Это только более чисто в моих примерах, относящихся к Python 3
Я чувствую, что так и должно быть. Самое близкое, что вы можете использовать:
file_output.writelines([foo_msg, '\n'])
Наверное, нет реальной причины, просто очень легко написать новую строку, когда вам это нужно, поэтому зачем загромождать интерфейс с дополнительным методом, чтобы это сделать?