У меня есть функция, которая оборачивает другую функцию. (Обернутая функция выполняет ssh-вызов через paramiko, но это, вероятно, здесь не важно.) Обернутая функция, кажется, возвращает список, но когда я пытаюсь распечатать его, код завершается неудачно с UnicodeEncodeError: 'ascii' codec can't encode characters in position 4843-4844: ordinal not in range(128)
Код:
tracelog = sys.stdout
def wrapper(*args, **kwargs):
global tracelog
print("Entering my_shell_func()", file=tracelog)
rval = my_shell_func(*args, **kwargs)
print("Exited my_shell_func()", file=tracelog)
print(" type(rval) =", type(rval), file=tracelog)
print(rval, file=tracelog)
return rval
Последний оператор print () завершился неудачно с этой ошибкой:
Entering my_shell_func()
Exited my_shell_func()
type(rval) = <class 'list'>
Traceback (most recent call last):
…
File "./mytest", line 41, in wrapper
print(rval, file=tracelog)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4843-4844: ordinal not in range(128)
Мне требуется около часа, чтобы добраться до этой точки отказа, поэтому каждый тест проходитзначительная стоимость. Я до сих пор не знаю, что было в этом списке, что сделало print () таким несчастным.
Есть ли способ заставить print () печатать абсолютно все, без вопросов?
Длятеперь я заключил этот последний оператор print () с try:…except:
и сообщением «извините, я не могу напечатать вывод этой функции, нажимая на», что расстраивает меня, но не идеально.