Python中如何将xml.etree.ElementTree对象直接转换为字节流?
无需临时文件生成XML字节流的实现方案
你完全可以通过Python内置的io.BytesIO内存字节流实现需求,不需要读写本地临时文件。xml.etree.ElementTree的write方法本身就支持传入类文件对象作为参数,具体实现代码如下:
import io import xml.etree.cElementTree as ET # 构造XML树 root = ET.Element("Example") tree = ET.ElementTree(root) # 直接将XML内容写入内存字节流 bytes_io = io.BytesIO() tree.write(bytes_io) # 将流指针重置到起始位置,保证后续读取内容完整 bytes_io.seek(0) # 直接传入你的数据库写入函数即可 write_to_db("File name", bytes_io)
你也可以用ET.tostring先拿到XML字节串,再封装为字节流,效果一致:
root = ET.Element("Example") xml_bytes = ET.tostring(root) bytes_io = io.BytesIO(xml_bytes) write_to_db("File name", bytes_io)
术语准确性说明
"bytes stream"的表述是准确的,Python技术语境下对应的标准中文术语是二进制类文件对象,也可简称为字节流对象。该类对象的核心特征是实现了返回bytes类型数据的read()方法,你之前用rb模式打开的本地文件、上述代码中的io.BytesIO实例都属于这类对象。
内容的提问来源于stack exchange,提问作者Carlos Monroy
相关产品推荐
相关产品推荐

