gpt4 book ai didi

python lxml 与 py2exe

转载 作者:行者123 更新时间:2023-11-28 18:49:33 26 4
gpt4 key购买 nike

我已经用 dom 生成了一个 XML,我想使用 lxml 来漂亮地打印 xml。

这是我用于 pretty-print xml 的代码

def prettify_xml(xml_str):

import lxml.etree as etree
root = etree.fromstring(xml_str)
xml_str = etree.tostring(root, pretty_print=True)

return xml_str

我的输出应该是一个 xml 格式的字符串。

我从 stactoverflow 的某个帖子中获得了这段代码。当我用 python 本身编译时,这完美地工作。但是当我将我的项目转换为从 py2exe 创建的二进制文件时(我的二进制文件是带有命名管道的 Windows 服务)。我遇到了两个问题:

  1. 我的服务没有启动,我通过在 py2exe 函数的 includes 选项中添加 lxml.etree 解决了这个问题。然后我的服务就正常启动了。

  2. 当在这里调用 xml 生成时,是我在日志中看到的错误“模块”对象没有属性“fromstring”

我在哪里纠正这个错误?我的第一个问题的解决方案是否正确?

我的 xml 生成代码:

from xml.etree import ElementTree
from xml.dom import minidom
from xml.etree.ElementTree import Element, SubElement, tostring, XML
import lxml.etree


def prettify_xml(xml_str):

root = lxml.etree.fromstring(xml_str)
xml_str = lxml.etree.tostring(root, pretty_print=True)

return xml_str

def dll_xml(status):
try:
xml_declaration = '<?xml version="1.0" standalone="no" ?>'

rootTagName='response'
root = Element(rootTagName)
root.set('id' , 'rp001')

parent = SubElement(root, 'command', opcode ='-ac')

# Create children
chdtag1Name = 'mode'
chdtag1Value = 'repreport'

chdtag2Name='status'
chdtag2Value = status

fullchildtag1 = ''+chdtag1Name+' value = "'+chdtag1Value+'"'
fullchildtag2=''+chdtag2Name+' value="'+chdtag2Value+'"'

children = XML('''<root><'''+fullchildtag1+''' /><'''+fullchildtag2+'''/></root> ''')

# Add parent
parent.extend(children)
dll_xml_doc = xml_declaration + tostring(root)

dll_xml_doc = prettify_xml(dll_xml_doc)

return dll_xml_doc

except Exception , error:
log.error("xml_generation_failed : %s" % error)

最佳答案

尝试使用PyInstaller而不是 py2exe。我通过运行 python pyinstaller.py YourPath\xml_a.py 将您的程序转换为二进制 .exe 没有问题。

关于python lxml 与 py2exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com