- 3 Ways to Write Text to a File in Python
- Writing One Line at a Time to a File in Python Using write()
- Writing One Line at a Time to a File in Python Using “print”
- writelines(): Writing All The Lines at a Time to a File in Python
- Python Write Text File
- TL;DR
- Steps for writing to text files
- Writing text file examples
- Appending text files
- Writing to a UTF-8 text file
- Summary
3 Ways to Write Text to a File in Python
If you are interested in writing text to a file in Python, there is probably many ways to do it. Here is three ways to write text to a output file in Python. The first step in writing to a file is create the file object by using the built-in Python command “open”. To create and write to a new file, use open with “w” option. The “w” option will delete any previous existing file and create a new file to write.
# open a (new) file to write outF = open("myOutFile.txt", "w")
If you want to append to an existing file, then use open statement with “a” option. In append mode, Python will create the file if it does not exist.
# open a file to append outF = open("myOutFile.txt", "a")
Once you have created the file object in write/append mode, you can write text in multiple ways. Let us say we have the text that we want to write is in a list “textList”.
textList = ["One", "Two", "Three", "Four", "Five"]
We can write this list to a file either line by line or write all lines at once.
Writing One Line at a Time to a File in Python Using write()
Let us create new file by creating the file object “outF” using “w” option as before. To write line by line, we loop through the textList and get each element and write it to the file.
outF = open("myOutFile.txt", "w") for line in textList: # write line to output file outF.write(line) outF.write("\n") outF.close()
Note that the elements in the “textList” does not have a new line character “\n”. Therefore, we added that while writing to the file. Otherwise, all five elements will be in a single line in the output file. Also note outF.close() at the end. close() method closes the access to the file. It is a good practice to use the close() method to close a file, once we are done with a file.
Writing One Line at a Time to a File in Python Using “print”
Another way to write one line at a time to a file in Python is to use the print statement. Instead of printing a statement to the scree, we redirect to the output file object.
outF = open("myOutFile.txt", "w") for line in textList: print >>outF, line outF.close()
writelines(): Writing All The Lines at a Time to a File in Python
Python also has a method that can write all lines at the same time to a file. Python’s “writelines()” method takes a list of lines as input and writes to a file object that is open with write/append access. For example to write our list of all line “all_lines”, using “writelines().
outF = open("myOutFile.txt", "w") outF.writelines(all_lines) outF.close()
We can also make our lives easier without writing file.close() statement by using with statement to write to a file. For example,
with open(out_filename, 'w') as out_file: .. .. .. parsed_line out_file.write(parsed_line)
If you are interested in reading from a text file, check Three ways to read a text file line by line in python.
Python Write Text File
Summary: in this tutorial, you’ll learn various ways to write text files in Python.
TL;DR
The following illustrates how to write a string to a text file:
with open('readme.txt', 'w') as f: f.write('readme')
Code language: JavaScript (javascript)
Steps for writing to text files
To write to a text file in Python, you follow these steps:
- First, open the text file for writing (or append) using the open() function.
- Second, write to the text file using the write() or writelines() method.
- Third, close the file using the close() method.
The following shows the basic syntax of the open() function:
The open() function accepts many parameters. But you’ll focus on the first two:
- The file parameter specifies the path to the text file that you want to open for writing.
- The mode parameter specifies the mode for which you want to open the text file.
For writing to a text file, you use one of the following modes:
Mode | Description |
---|---|
‘w’ | Open a text file for writing. If the file exists, the function will truncate all the contents as soon as you open it. If the file doesn’t exist, the function creates a new file. |
‘a’ | Open a text file for appending text. If the file exists, the function append contents at the end of the file. |
‘+’ | Open a text file for updating (both reading & writing). |
The open() function returns a file object that has two useful methods for writing text to the file: write() and writelines() .
- The write() method writes a string to a text file.
- The writelines() method write a list of strings to a file at once.
The writelines() method accepts an iterable object, not just a list, so you can pass a tuple of strings, a set of strings, etc., to the writelines() method.
To write a line to a text file, you need to manually add a new line character:
f.write('\n') f.writelines('\n')
Code language: JavaScript (javascript)
Writing text file examples
The following example shows how to use the write() function to write a list of texts to a text file:
lines = ['Readme', 'How to write text files in Python'] with open('readme.txt', 'w') as f: for line in lines: f.write(line) f.write('\n')
Code language: JavaScript (javascript)
If the readme.txt file doesn’t exist, the open() function will create a new file.
The following shows how to write a list of text strings to a text file:
lines = ['Readme', 'How to write text files in Python'] with open('readme.txt', 'w') as f: f.writelines(lines)
Code language: JavaScript (javascript)
If you treat each element of the list as a line, you need to concatenate it with the newline character like this:
lines = ['Readme', 'How to write text files in Python'] with open('readme.txt', 'w') as f: f.write('\n'.join(lines))
Code language: JavaScript (javascript)
Appending text files
To append to a text file, you need to open the text file for appending mode. The following example appends new lines to the readme.txt file:
more_lines = ['', 'Append text files', 'The End'] with open('readme.txt', 'a') as f: f.write('\n'.join(more_lines))
Code language: JavaScript (javascript)
Writing to a UTF-8 text file
If you write UTF-8 characters to a text file using the code from the previous examples, you’ll get an error like this:
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-44: character maps to undefined>
Code language: HTML, XML (xml)
To open a file and write UTF-8 characters to a file, you need to pass the encoding=’utf-8′ parameter to the open() function.
The following example shows how to write UTF-8 characters to a text file:
quote = '成功を収める人とは人が投げてきたレンガでしっかりした基盤を築くことができる人のことである。' with open('quotes.txt', 'w', encoding='utf-8') as f: f.write(quote)
Code language: JavaScript (javascript)
Summary
- Use the open() function with the w or a mode to open a text file for appending.
- Always close the file after completing writing using the close() method or use the with statement when opening the file.
- Use write() and writelines() methods to write to a text file.
- Pass the encoding=’utf-8′ to the open() function to write UTF-8 characters into a file.