打印列表时,简单的print()语句失败:UnicodeEncodeError:'ascii'编解码器无法编码字符…

时间:2019-10-22 02:46:59

标签: python python-3.x unicode

我有一个包装另一个功能的功能。 (包装函数通过paramiko进行ssh调用,但这在这里可能并不重要。)包装函数似乎正在返回列表,但是当我尝试打印列表时,代码失败,并显示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()完全打印任何东西,没有问题?

现在,我已经用try:…except:包装了最后的print()语句,并显示了一条消息,“抱歉,无法打印该函数的输出,请按下”,这使我感到困惑,但是不够理想。

0 个答案:

没有答案