AbeLinkon AbeLinkon - 3 months ago 17
Python Question

Python - write() versus writelines() and concatenated strings

So I'm learning Python. I am going through the lessons and ran into a problem where I had to condense a great many

target.write()
into a single
write()
, while having a
"\n"
between each user input variable(the object of
write()
).

I came up with:

nl = "\n"
lines = line1, nl, line2, nl, line3, nl
textdoc.writelines(lines)


If I try to do:

textdoc.write(lines)


I get an error. But if I type:

textdoc.write(line1 + "\n" + line2 + ....)


Then it works fine. Why am I unable to use a string for a newline in
write()
but I can use it in
writelines()
?

Python 2.7
When I searched google most resources I found were way over my head, I'm still a lay-people.

DGH DGH
Answer

writelines expects a list of strings, while write expects a single string.

line1 + "\n" + line2 merges those strings together into a single string before passing it to write.

Note that if you have many lines, you may want to use "\n".join(list_of_lines).

Comments