You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中win32evtlogutil报错:TypeError需字节对象而非字符串的解决方法

解决win32evtlogutil.ReportEvent的TypeError问题

这个错误很典型——Python 3里字符串和字节流是严格区分的,而win32evtlogutil.ReportEvent的data参数要求传入字节类型(bytes),但你传的是普通字符串(str),所以才会抛出a bytes-like object is required, not 'str'的异常。

给你两种简单直接的修复方案:

方法一:将字符串编码为bytes

把你要传入的字符串通过encode()方法转换成字节流,推荐使用utf-8编码保证兼容性:

win32evtlogutil.ReportEvent(
    "TEST001", 
    101, 
    eventType=0, 
    data=(err_log_path + 'error_TEST001.log').encode('utf-8')
)

方法二:支持多数据项的场景(可选)

如果需要在事件日志中传递多个内容项,可以把每个字符串单独编码后放入列表:

log_data = [
    "错误日志路径提示:".encode('utf-8'),
    (err_log_path + 'error_TEST001.log').encode('utf-8')
]
win32evtlogutil.ReportEvent(
    "TEST001", 
    101, 
    eventType=0, 
    data=log_data
)

额外提醒:后续如果要从Windows事件日志中读取这些数据,记得用decode('utf-8')把字节流转回到字符串,这样中文或特殊字符就能正常显示了。

内容的提问来源于stack exchange,提问作者funyao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:29:23