2014-08-29 112 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