Python print file to stdout

Python – Print to File

In this article, we shall look at some of the ways to use Python to print to file.

Method 1: Print To File Using Write()

We can directly write to the file using the built-in function write() that we learned in our file handling tutorial.

with open('output.txt', 'a') as f: f.write('Hi') f.write('Hello from AskPython') f.write('exit')

Output (Assume that output.txt is a newly created file)

[email protected]:~# python output_redirection.py Hi Hello from AskPython exit [email protected]:~# cat output.txt Hi Hello from AskPython exit

Method 2: Redirect sys.stdout to the file

Usually, when we use the print function, the output gets displayed to the console.

But, since the standard output stream is also a handler to a file object, we can route the standard output sys.stdout to point to the destination file instead.

The below code is taken from our previous article on stdin, stdout and stderr. This redirects the print() to the file.

import sys # Save the current stdout so that we can revert sys.stdou after we complete # our redirection stdout_fileno = sys.stdout sample_input = ['Hi', 'Hello from AskPython', 'exit'] # Redirect sys.stdout to the file sys.stdout = open('output.txt', 'w') for ip in sample_input: # Prints to the redirected stdout (Output.txt) sys.stdout.write(ip + '\n') # Prints to the actual saved stdout handler stdout_fileno.write(ip + '\n') # Close the file sys.stdout.close() # Restore sys.stdout to our old saved file handler sys.stdout = stdout_fileno

Output (Assume that output.txt is a newly created file)

[email protected]:~# python output_redirection.py Hi Hello from AskPython exit [email protected]:~# cat output.txt Hi Hello from AskPython exit

Method 3: Explicitly print to the file

We can directly specify the file to be printed in the call to print() , by mentioning the file keyword argument.

Читайте также:  Gallery

For example, the below snippet prints to the file output.txt .

print('Hi', file=open('output.txt', 'a')) print('Hello from AskPython', file=open('output.txt', 'a')) print('exit', file=open('output.txt', 'a'))

The file now has the three lines appended to it, and we have successfully printed to output.txt !

Using a context manager

However, this method isn’t the best way to resolve this situation, due to the repeated calls to open() on the same file. This wastes time, and we can do better!

The better way would be to explicitly use a context manager with statement, which takes care of automatically closing the file and using the file object directly.

with open("output.txt", "a") as f: print('Hi', file=f) print('Hello from AskPython', file=f) print('exit', file=f)

This gives the same result as before, appending the three lines to output.txt , but is now much faster, since we don’t open the same file again and again.

Method 4: Use the logging module

We can use Python’s logging module to print to the file. This is preferred over Method 2, where explicitly changing the file streams is not be the most optimal solution.

import logging # Create the file # and output every level since 'DEBUG' is used # and remove all headers in the output # using empty format='' logging.basicConfig(filename='output.txt', level=logging.DEBUG, format='') logging.debug('Hi') logging.info('Hello from AskPython') logging.warning('exit')

This will, by default, append the three lines to output.txt . We have thus printed to the file using logging , which is one of the recommended ways of printing to a file.

References

Источник

Перенаправить вывод печати в файл в Python

Перенаправить вывод печати в файл в Python

  1. Используйте функцию write() для вывода вывода в файл в Python
  2. Используйте функцию print() для вывода вывода в файл в Python
  3. Используйте sys.stdout для вывода вывода в файл на Python
  4. Используйте функцию contextlib.redirect_stdout() для вывода вывода в файл в Python

Есть еще одна задача обработки файлов, которую можно выполнить с помощью Python, т.е. перенаправление вывода во внешний файл. По сути, стандартный вывод можно распечатать в файл, который выбирает сам пользователь. Есть много способов сделать это.

В этом руководстве мы увидим некоторые методы перенаправления вывода в файл на Python.

Используйте функцию write() для вывода вывода в файл в Python

Это встроенная функция Python, которая помогает в написании или добавлении указанного текста в файл. w и a — это 2 операции в этой функции, которые будут писать или добавлять любой текст в файл. w используется, когда пользователь хочет очистить файл перед записью в него чего-либо. В то время как a используется, когда пользователь просто хочет добавить текст к существующему тексту в файле.

with open("randomfile.txt", "a") as o:  o.write('Hello')  o.write('This text will be added to the file') 

Обратите внимание, что здесь используется функция open() для открытия файла. a в коде означает, что текст добавлен в файл.

Используйте функцию print() для вывода вывода в файл в Python

В этом методе сначала мы вызываем функцию open() , чтобы открыть желаемый файл. После этого используется функция print() для печати текста в файле. Пользователь всегда выбирает, использовать ли оператор w или a .

with open("randomfile.txt", "w") as external_file:  add_text = "This text will be added to the file"  print(add_text, file=external_file)  external_file.close() 

Обратите внимание, что функция close() также используется для закрытия файла в приведенном выше коде после его открытия с помощью open() . После вызова функции close() файл нельзя прочитать и больше ничего нельзя будет записать. Если пользователь попытается внести какие-либо изменения в файл после вызова функции close() , возникнет ошибка.

Используйте sys.stdout для вывода вывода в файл на Python

Модуль sys — это встроенный модуль Python, который используется пользователем для работы с различными частями среды выполнения в Python. Чтобы использовать sys.stdout , сначала необходимо импортировать модуль sys .

sys.stdout используется, когда пользователь хочет вывести вывод непосредственно на главную консоль экрана. Форма вывода может быть различной, например, это может быть приглашение для ввода, оператор печати или просто выражение. В этом методе мы будем печатать оператор в текстовом файле.

import sys  file_path = 'randomfile.txt' sys.stdout = open(file_path, "w") print("This text will be added to the file") 

Обратите внимание, что перед использованием sys.stdout в качестве объекта для открытия и печати оператора в текстовом файле, пользователь должен указать определенный путь к файлу, в противном случае ни одна из операций не может быть выполнена с файлом.

Используйте функцию contextlib.redirect_stdout() для вывода вывода в файл в Python

Модуль contextlib обычно используется с оператором with .

Функция contextlib.redirect_stdout() помогает перенаправить sys.stdout в какой-либо файл на временной основе путем настройки диспетчера контекста.

import contextlib  file_path = 'randomfile.txt' with open(file_path, "w") as o:  with contextlib.redirect_stdout(o):  print("This text will be added to the file") 

Как видите, оператор with используется с операциями модуля contextlib .

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

Сопутствующая статья — Python Print

Источник

Оцените статью