Как изменить место вывода данных из python?

Рейтинг: 3Ответов: 2Опубликовано: 12.02.2023

При выполнение такого кода на python print("Hello, world") результат отобразиться в консоле PyCharme/Xcode/VSCode и тд. Как изменить место вывода этого результата? То есть, чтобы python печатал по умолчанию в другое место (файл на рабочем столе, например).

Ответы

▲ 4Принят

Хорошей практикой считается пайплайн в какой-то файл, название которого может быть любым — файл создастся, если он отсутствует:

python some_file.py > file_on_desktop.txt

Но судя по тому, что вы запускаете код из IDE, другим подходящим in-code решением может стать следующий контекстный менеджер, внутри которого нужно выполнять код, чтобы вывод был перенаправлен в файл.

import sys


with open('file_on_desktop.txt', 'w') as sys.stdout:
    print('Hello, world')

В обоих случая в файле file_on_desktop.txt появится строка «Hello, world».

▲ 1

В коде из ответа выше будет сложно вернуть вывод в stdout.

Можно использовать contextlib.redirect_stdout, так:

from contextlib import redirect_stdout

with open('test.txt', 'w') as f:
    with redirect_stdout(f):
        # какой-то код

Подробнее в документации.