Рубрики
Без рубрики

Python – Печать в файл

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

Автор оригинала: Pankaj Kumar.

Python – Печать в файл

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

Метод 1: Печать в файл с помощью записи ()

Мы можем напрямую написать файл, используя встроенный функцию записи (), которую мы узнали в нашем руководстве по обработке файлов.

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

Выход (Предположим, что output.txt – вновь созданный файл)

vijay@AskPython:~# python output_redirection.py
Hi
Hello from AskPython
exit
root@ubuntu:~# cat output.txt
Hi
Hello from AskPython
exit

Способ 2: перенаправить Sys.Stdout к файлу

Обычно, когда мы используем Печать Функции Вывод отображается на консоль.

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

Код ниже взяты из нашей предыдущей статьи на Stdin, Stdout и STDERR Отказ Это перенаправляет Печать () к файлу.

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.txt – вновь созданный файл)

vijay@AskPython:~# python output_redirection.py
Hi
Hello from AskPython
exit
root@ubuntu:~# cat output.txt
Hi
Hello from AskPython
exit

Способ 3: явное распечатать в файл

Мы можем напрямую указать файл, который будет напечатан в вызове Печать () , упомянув Файл Ключевое слово аргумент.

Например, при принте ниже фрагмента принты к файлу yump.txt Отказ

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

Файл теперь есть три строки, добавленные к нему, и мы успешно напечатали на yump.txt !

Использование контекста

Однако этот метод не лучший способ разрешить эту ситуацию из-за повторных вызовов на Открыть () в том же файле. Это тратить время, и мы можем сделать лучше!

Лучшим способом было бы явно использовать контекстный менеджер с Заявление, которое позаботится автоматически закрывает файл и напрямую использует объект файла.

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

Это дает тот же результат, что и прежде, добавление трех строк на yump.txt Но сейчас намного быстрее, так как мы не открываем один и тот же файл снова и снова.

Способ 4: Используйте модуль ведения журнала

Мы можем использовать модуль журнала Python для печати в файл. Это предпочтительно над способом 2, где явное изменение потоков файлов не является наиболее оптимальным решением.

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')

Это по умолчанию добавит три строки на yump.txt Отказ Таким образом, мы напечатали в файл, используя Регистрация , который является одним из рекомендуемых способов печати в файл.

использованная литература