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.
Reading and Writing to text files in Python
Python provides inbuilt functions for creating, writing, and reading files. There are two types of files that can be handled in python, normal text files and binary files (written in binary language, 0s, and 1s).
- Text files: In this type of file, Each line of text is terminated with a special character called EOL (End of Line), which is the new line character (‘\n’) in python by default.
- Binary files: In this type of file, there is no terminator for a line, and the data is stored after converting it into machine-understandable binary language.
In this article, we will be focusing on opening, closing, reading, and writing data in a text file.
File Access Modes
Access modes govern the type of operations possible in the opened file. It refers to how the file will be used once its opened. These modes also define the location of the File Handle in the file. File handle is like a cursor, which defines from where the data has to be read or written in the file. There are 6 access modes in python.
- Read Only (‘r’) : Open text file for reading. The handle is positioned at the beginning of the file. If the file does not exists, raises the I/O error. This is also the default mode in which a file is opened.
- Read and Write (‘r+’): Open the file for reading and writing. The handle is positioned at the beginning of the file. Raises I/O error if the file does not exist.
- Write Only (‘w’) : Open the file for writing. For the existing files, the data is truncated and over-written. The handle is positioned at the beginning of the file. Creates the file if the file does not exist.
- Write and Read (‘w+’) : Open the file for reading and writing. For an existing file, data is truncated and over-written. The handle is positioned at the beginning of the file.
- Append Only (‘a’): Open the file for writing. The file is created if it does not exist. The handle is positioned at the end of the file. The data being written will be inserted at the end, after the existing data.
- Append and Read (‘a+’) : Open the file for reading and writing. The file is created if it does not exist. The handle is positioned at the end of the file. The data being written will be inserted at the end, after the existing data.
How Files are Loaded into Primary Memory
There are two kinds of memory in a computer i.e. Primary and Secondary memory every file that you saved or anyone saved is on secondary memory cause any data in primary memory is deleted when the computer is powered off. So when you need to change any text file or just to work with them in python you need to load that file into primary memory. Python interacts with files loaded in primary memory or main memory through “file handlers” ( This is how your operating system gives access to python to interact with the file you opened by searching the file in its memory if found it returns a file handler and then you can work with the file ).
Opening a File
It is done using the open() function. No module is required to be imported for this function.
File_object = open(r"File_Name","Access_Mode")
The file should exist in the same directory as the python program file else, the full address of the file should be written in place of the filename. Note: The r is placed before the filename to prevent the characters in the filename string to be treated as special characters. For example, if there is \temp in the file address, then \t is treated as the tab character, and an error is raised of invalid address. The r makes the string raw, that is, it tells that the string is without any special characters. The r can be ignored if the file is in the same directory and the address is not being placed.