欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python运行不了、显示警告_Python中偶尔遇到的细节疑问(二):UnicodeDecodeError,警告与忽略警告warnings...

发布时间:2025/4/16 python 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python运行不了、显示警告_Python中偶尔遇到的细节疑问(二):UnicodeDecodeError,警告与忽略警告warnings... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1. 使用base64解码时,出现:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 21: invalid continuation byte

这里不是读文件的时候,需要加入 encoding='utf-8' 等编码格式的问题,而是:

importbase64

bb= r'44CQ5oqW6Z+z54Gr5bGx54mI44CR7aC9'ss= base64.b64decode(bb).decode('utf-8') #报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 21: invalid continuation byte

原因是:其中存在子字符串无法被转换,也就是部分二进制数据不能被decode。

解决方法:设置 'ignore' 即可。

ss = base64.b64decode(bb).decode('utf-8','ignore')

2. warnings类(警告与忽略警告)

內建警告类型主要有:

警告类类型描述

Warning

所有警告类别类的基类,它是 异常Exception 的子类

UserWarning

warn() 的默认类别

DeprecationWarning

用于已弃用或不推荐功能的警告(默认忽略)

SyntaxWarning

可疑语法特征的警告

RuntimeWarning

可疑运行时功能的警告

FutureWarning

对于未来特性更改的警告

PendingDeprecationWarning

将来会被弃用或不推荐的功能警告类别(默认忽略)

ImportWarning

导入模块过程中触发的警告(默认忽略)

UnicodeWarning

与 Unicode 相关的警告

BytesWarning

与 bytes 和 bytearray 相关的警告 (Python3)

ResourceWarning

与资源使用相关的警告(Python3)

可以通过继承內建警告类型来实现自定义的警告类型,警告类型category必须始终是 Warning类的子类。

忽略警告方法:

importwarnings

warnings.filterwarnings("ignore")

函数 filterwarnings():用于过滤警告

def filterwarnings(action, message="", category=Warning, module="", lineno=0,

append=False):"""Insert an entry into the list of warnings filters (at the front).

'action' -- one of "error", "ignore", "always", "default", "module",

or "once"

'message' -- a regex that the warning message must match

'category' -- a class that the warning must be a subclass of

'module' -- a regex that the module name must match

'lineno' -- an integer line number, 0 matches all warnings

'append' -- if true, append to the list of filters"""

action:

"error"

将匹配警告转换为异常

"ignore"

不打印所匹配到的警告

"always"

一直输出匹配的警告

"default"

对于同样的警告只输出第一次出现的警告

"module"

在一个模块中只输出首次出现的警告

"once"

输出第一次出现的警告,不考虑它们的位置

message:用于匹配警告消息的正则表达式,不区分大小写;默认值为空。

category:警告类型(但是必须是 Warning 的子类);默认值就是warning基类。

module:用于匹配模块名称的正则表达式,区分大小写;默认值为空。

lineno:整数,表示警告发生的行号,为 0 则匹配所有行号;默认值是0。

append: 如果为真,则将条件放在过滤规则的末尾;默认False,即放在前面。

函数 warn():用于产生警告、忽略或者引发异常

def warn(message, category=None, stacklevel=1, source=None):"""Issue a warning, or maybe ignore it or raise an exception."""

参考:

总结

以上是生活随笔为你收集整理的python运行不了、显示警告_Python中偶尔遇到的细节疑问(二):UnicodeDecodeError,警告与忽略警告warnings...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。