Запись вывода строки в файл в pythonwPython

Программы на Python
Anonymous
Запись вывода строки в файл в pythonw

Сообщение Anonymous »

Я определил следующий класс для регистрации данных. Целью является вывод в стандартный вывод/stderr, а также в текстовый файл.

Код: Выделить всё

class Log:
path = ""
first = True

@classmethod
def init(cls,path):
Log.path = path
Log.first = True

@classmethod
def print(cls,*args,**kwargs):
builtins.print(*args,**kwargs)
if Log.path == "":
return
if Log.first:
mode = 'w'
Log.first = False
else:
mode = 'a'
with open(Log.path,mode) as f:
builtins.print(*args,**kwargs,file=f)
Он отлично работает в обычном интерпретаторе Python (командная строка). При работе под управлением pythonw stdout/stderr подавляется, но я все равно ожидаю вывода в файл. После запуска сценария я вижу в файле только выходные данные последнего вызова Log.print(), как если бы он полностью игнорировал режим «a».
Я подозреваю, что проблема в том, что print() просто обрабатывает все как стандартный вывод и временно перенаправляет стандартный вывод на файловый объект, хотя в этом случае я ожидал бы пустой файл. Я могу просто изменить последний оператор, чтобы использовать «f.write» вместо «builtins.print», но тогда я потеряю все форматирование, выполненное функцией print(). Есть ли способ получить отформатированный результат функции print() в виде строки?

Подробнее здесь: https://stackoverflow.com/questions/798 ... in-pythonw

Вернуться в «Python»