我试图使用Python中的pefile库将各种类型的文件(如. exe、. dll和. deb文件)中的字节序列解码为Unicode字符串.但是,我有时会遇到Unicode解码错误.如何有效地处理这些错误?

下面是相关的代码片段:

import pefile

def get_section_addresses(file_path):
    section_addresses = {}
    pe = pefile.PE(file_path)
    for section in pe.sections:
        section_addresses[section.Name.decode().strip('\x00')] = section.VirtualAddress
    return section_addresses

section_addresses = get_section_addresses('D:/Binary/file/rufus.exe')
for name, address in section_addresses.items():
    print(f"{name}:{address:08X}")

我正在使用pefile解析可移植可执行文件(PE),提取部分名称和它们对应的虚拟地址.然而,在解码节名的过程中,我有时会遇到Unicode解码错误.

推荐答案

我已经使用嵌套的try—except块实现了错误处理,

 try:
    pe = pefile.PE(file_path)
    for section in pe.sections:
        try:
            name = section.Name.decode().strip('\x00')
        except UnicodeDecodeError:
            name = "Undecodable"
        section_addresses[name] = section.VirtualAddress
except pefile.PEFormatError:
    print(f"Error: {file_path} is not a valid PE file.")
return section_addresses

Python相关问答推荐

Chatgpt API不断返回错误:404未能从API获取响应

列表上值总和最多为K(以O(log n))的最大元素数

使用Keras的线性回归参数估计

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

对整个 pyramid 进行分组与对 pyramid 列子集进行分组

scikit-learn导入无法导入名称METRIC_MAPPING64'

如何在类和classy-fastapi -fastapi- followup中使用FastAPI创建路由

Pandas:将多级列名改为一级

joblib:无法从父目录的另一个子文件夹加载转储模型

Python逻辑操作作为Pandas中的条件

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

在Python中计算连续天数

Numpyro AR(1)均值切换模型抽样不一致性

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

从源代码显示不同的输出(机器学习)(Python)

为什么在Python中00是一个有效的整数?

Pythonquests.get(Url)返回Colab中的空内容

Stats.ttest_ind:提取df值

Pandas:使列中的列表大小与另一列中的列表大小相同

来自任务调度程序的作为系统的Python文件