2014-08-29 80 views
0

我有以下脚本 -蟒蛇LXML保存不工作

​​

它击中2个环境2个独立的API,但该数据几乎是相同的。源工作正常,只要它尝试与目标数据做任何事情,我得到了followign错误 -

Traceback (most recent call last): 
    File "S:\Operations\Tidal\deployment\deployv2.py", line 213, in <module> 
    main() 
    File "S:\Operations\Tidal\deployment\deployv2.py", line 209, in main 
    auto_deploy.deploy() 
    File "S:\Operations\Tidal\deployment\deployv2.py", line 173, in deploy 
    dstdoc = etree.parse(dstfile) 
    File "lxml.etree.pyx", line 3239, in lxml.etree.parse (src\lxml\lxml.etree.c:6 
9970) 
    File "parser.pxi", line 1770, in lxml.etree._parseDocument (src\lxml\lxml.etre 
e.c:102272) 
    File "parser.pxi", line 1790, in lxml.etree._parseFilelikeDocument (src\lxml\l 
xml.etree.c:102531) 
    File "parser.pxi", line 1685, in lxml.etree._parseDocFromFilelike (src\lxml\lx 
ml.etree.c:101457) 
    File "parser.pxi", line 1134, in lxml.etree._BaseParser._parseDocFromFilelike 
(src\lxml\lxml.etree.c:97084) 
    File "parser.pxi", line 582, in lxml.etree._ParserContext._handleParseResultDo 
c (src\lxml\lxml.etree.c:91290) 
    File "parser.pxi", line 683, in lxml.etree._handleParseResult (src\lxml\lxml.e 
tree.c:92476) 
    File "parser.pxi", line 622, in lxml.etree._raiseParseError (src\lxml\lxml.etr 
ee.c:91772) 
lxml.etree.XMLSyntaxError: Extra content at the end of the document, line 4, col 
umn 1 

所以必须有一些关于目的地/目标XML不同,但我有一个硬时间了解什么。当我在浏览器中查看这两个值时,除了少数值(jobmst_id)外,它们是相同的。

+0

目标文档末尾是否有任何额外的内容?尝试将它保存到一个文件中,并用'od -c myfile'打开它。 – 2014-08-29 23:03:04

回答

0

如果任何人遇到的一个问题是这样,将来我发现这个问题,并没有什么限于lxml相关或我生成XML。我的源代码环境使用mod_wsgi进行生产,但目标环境仍在使用runserver。

我想在编码的东西与目标打破。我只是生产目标环境,它工作正常。

1

您没有关闭文件。更改srcxmlsave.closesrcxmlsave.close()或使用上下文管理作为

with open(srcxml, 'w') as srcxmlsave: 
    srcxmlsave.write(srcdata) 
+0

感谢您捕获这个问题,结果是我的API在目标环境中没有更新的代码。 – whoisearth 2014-09-02 00:37:07