We always use print statements in Python to display the output in the console or command line terminal. However, sometimes we want to change this behavior to print to a text file instead of the console.
Print to file using file argument
print() method accepts the file parameter as one of the arguments, and using this, we can print the standard output to a file.
The default value of the file argument is
sys.stdout, which prints the output on the screen.
Example 1: Print to the text file
The below program opens the existing text file in the write mode using the
open() function (if file is not available it will create a new file) and writes all the text specified inside the print statement. Once the content is written to a file, we close the file using the
# Print to the text file file = open('log.txt', 'w') print('This is a sample print statement', file = file) print('Hello World', file = file) file.close()
This is a sample print statement Hello World
Example 2: Print to the text file using inline file argument
If you want to control only a few print statements to output to a text file, you could inline the file argument inside the print statement, as shown below.
# Appends the print statement into a log.txt print("Welcome to ItsMyCode", file=open('log.txt','a'))
Welcome to ItsMyCode
Redirecting the Standard Output Stream to a file
Specifying the file argument helps debug the smaller programs but is not desirable in some situations.
In this case, we can redirect all the standard output stream to a file. Setting the standard output to a file ensures that the text specified inside the
print() function will be written to a file instead of displaying in the console.
The standard output can be set in Python by importing the
sys module and setting the
stdout to a file or file-like object.
import sys # Prints in a console/terminal print('Default mode: Prints on a console.') # Store the reference of original standard output into variable original_stdout = sys.stdout # Create or open an existing file in write mode with open('log.txt', 'w') as file: # Set the stdout to file object sys.stdout = file print('File Mode: Print text to a file.') # Set the stdout back to the original or default mode sys.stdout = original_stdout print('Default Mode: Prints again on a console.')
Hello Welcome to Python Tutorials !!! File Mode: Print text to a file.
Default mode: Prints on a console. Default Mode: Prints again on a console.
Redirect the Python Script Output to File
The easiest and dirty way is to redirect the Python script’s output directly from the command line window while executing the script.
For example, if you have a Python script file named
main.py with the following code.
We can redirect the output of the Python script using the right angle bracket, as shown below.
python3 main.py > output.txt
print("Hello World !!!")
If you open the
output.txt file, you can see the below content written into the text file.
Hello World !!!