Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как автоматически направлять вывод операторов печати в файл в python?

Автор вопроса: alwbtcОтветов: 1

У меня есть скрипт на Python, он содержит операторы print здесь и там для целей отладки. Теперь мне трудно читать их в консоли. Есть ли в python какие-либо библиотеки, которые автоматически направляют все выходные данные операторов print в указанный текстовый файл? Кстати, я использую Windows 7, а не Linux. Я также не запускаю свои сценарии из командной строки.

Итак, я хочу что-то вроде ниже:

import logger_module

log_file = "log.txt"
logger_module.activate_logging(log_file)

print "blablabla"

Когда я запускаю приведенный выше скрипт, я должен увидеть "blablabla" в файле log.txt.

  • Как насчет использования перенаправления? python script_name.py > output.txt falsetru 03.01.2014
  • Перенаправление работает на windows 7 jgritty 03.01.2014
  • Вы можете использовать модуль logging. 03.01.2014
  • Но я хочу запустить скрипт внутри скрипта, а не из командной строки. alwbtc 03.01.2014
  • @Набла, пожалуйста, объясните, как использовать модуль ведения журнала в этом случае. alwbtc 03.01.2014
  • @alwbtc Делайте logging.log вызовы вместо распечаток, это не должно было решить вашу конкретную проблему, но кажется подходящим для отладки 03.01.2014

pythonloggingoutput

Ответы

Ответ 1 · рейтинг 2 · Madison May

Я считаю, что это самое близкое, что вы получите:

import sys
sys.stdout = open('file', 'w')
print 'test' # prints test to file

Если вы хотите писать в несколько мест, вы можете использовать следующее. Любой объект с методом записи может быть назначен sys.stdout в python.

import sys

class Logger(object):
    def __init__(self, *files):
        self.files = files

    def write(self, obj):
        for f in self.files:
            f.write(obj)

f = open('file', 'w')
sys.stdout = Logger(f, sys.stdout)

print "Python Magic"

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы