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

Python:如何用Requests下载EXE到内存并导入pefile.PE?

解决requests下载EXE并导入pefile.PE的错误问题

错误原因

你遇到的TypeError是因为open()函数仅支持传入文件路径、字节路径或文件描述符,无法直接处理io.BytesIO对象——而BytesIO本身就是可直接读取的类文件对象,不需要再用open()包裹。

正确代码示例

import requests
import pefile
import io

# 下载目标EXE文件
responseEXE = requests.get('PATH_TO_EXE')
# 确保请求成功,避免下载失败后续代码报错
responseEXE.raise_for_status()

# 直接用BytesIO包装二进制内容,创建PE对象
pe_payload = pefile.PE(data=io.BytesIO(responseEXE.content))

# 获取原始二进制数据的两种方式:
# 方式1:直接使用response的content属性(最简便)
payload_data = responseEXE.content

# 方式2:通过BytesIO读取(适合需要多次操作二进制流的场景)
byte_stream = io.BytesIO(responseEXE.content)
payload_data = byte_stream.read()

关键说明

  • pefile.PE()的data参数支持直接传入类文件对象(如BytesIO),无需额外转换
  • 无需对BytesIO对象调用open(),它本身已经实现了文件对象的读写接口
  • 添加response.raise_for_status()可以在请求返回错误状态码时立即抛出异常,便于排查下载问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:33:13