ID : 406
viewed : 292
Tags : PythonPython File
93
This tutorial will introduce and explain the difference between the write()
and writelines()
methods in Python.
write()
and writelines()
Methods to Write Specified Text to a File in PythonThe write()
method expects a string as an argument and writes it to the file. If we provide a list of strings, it will raise an exception. The writelines()
method expects an iterable argument. Also, the write()
method displays the output but does not provide a new line character, whereas the writelines()
method displays the output and provides a new line character at the end of the string. It is important to note that writelines()
do not automatically insert a new line after each item in the iterable. We have to provide a new line by ourselves. If we have many lines to write to a file, writelines()
could be a better option. It performs well because it doesn’t create a temporary concatenated string, just iterating over the lines.
In the program below, we opened the file samplefile.txt
in the write mode. The lines
variable is a tuple, i.e., an immutable collection of strings. When we try to execute the program, it raised an exception-type error. The arguments we provided to the write()
method is a tuple that caused the error. Here, we used the with
method for file handling. This method provides better syntax and exception handling. So, it is a good practice to use the with
method where applicable. The method is helpful because any files opened will be closed after one is done.
Example Code:
# python 3.x nl = "\n" line1 = "Good" line2 = "Morning" line3 = "Sunshine" lines = line1, nl, line2, nl, line3, nl with open('samplefile.txt', 'w') as f: f.write(lines)
Output:
TypeError: write() argument must be str, not tuple
In a similar context, when we use writelines()
, the program is executed successfully, and a file named samplefile.txt
is created where lines
is passed as an argument to the writelines()
method.
Example Code:
# python 3.x nl = "\n" line1 = "Good" line2 = "Morning" line3 = "Sunshine" lines = line1, nl, line2, nl, line3, nl with open('samplefile.txt', 'w') as f: f.writelines(lines)
Output:
Good Morning Sunshine
For the same program, the multiple lines are concatenated to a single string variable called lines_joined
, which is easily accepted as an argument for the write()
method.
Example Code:
# python 3.x nl = "\n" line1 = "Good" line2 = "Morning" line3 = "Sunshine" lines_joined = line1 + nl + line2 + nl + line3 + nl with open('samplefile.txt', 'w') as f: f.write(lines_joined)
Output:
Good Morning Sunshine
write()
and writelines()
Methods to Write Iterables to a File in PythonThe join()
method takes all items in an iterable and joins them into one string. In the program below, we used the join()
method with '\n'
as a glue to concatenate the string in lines
. It is a better approach for concatenation instead of using the +
operator.
Example Code:
# python 3.x lines = ["Hello", "World"] with open('hello.txt', 'w') as f: f.write('\n'.join(lines))
Output:
Hello World
It is less efficient to use the join()
method for an extremely long list of strings. In such a case, an entirely new and very long string is created in memory before writing it. So, in the program below, we used a generator expression to write the strings in the newline. Here, the data is written piece-wise.
Example Code:
# python 3.x lines = ["Hello", "World"] with open('hello.txt', 'w') as f: for l in lines: f.write('%s\n' % l)
Output:
Hello World
The same program as above is implemented through the writelines()
method. It makes the use of a generator expression and dynamically creates newline-terminated strings. The writelines()
method iterates over this sequence of strings and writes every item.
Example Code:
# python 3.x lines = ["Hello", "World"] with open('hello.txt', 'w') as file: file.writelines("%s\n" % t for t in texts)
Output:
Hello World