Запись вывода строки в файл в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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