0

への関数呼び出しがあるたびに次のエラーが発生し続けますが、関数呼び出しをxml(productline)に置き換えるfile = open('config\\' + productLine + '.xml','r')と動作するように見えますが、なぜですか?

def xml(productLine):
         with open('config\\' + productLine + '.xml','r') as f:
    return f.read()


def getsanityresults(productline):

xmlfile=xml(productline) // replace with file = open('config\\' + productLine + '.xml','r')
dom = minidom.parse(xmlfile)
data=dom.getElementsByTagName('Sanity_Results')
#print "DATA"
#print data
textnode = data[0].childNodes[0]
testresults=textnode.data
#print testresults
for line in testresults.splitlines():
    #print line
    line = line.strip('\r,\n')
    #print line
    line = re.sub(r'(http://[^\s]+|//[^\s]+|\\\\[^\s]+)', r'<a href="\1">\1</a>', line)
    print line
    #print line       
    resultslis.append(line)
print resultslis
return resultslis

エラー:

Traceback (most recent call last):
 File "C:\Dropbox\scripts\announce_build_wcn\wcnbuild_release.py", line 910, in <module>
  main()
 File "C:\Dropbox\scripts\announce_build_wcn\wcnbuild_release.py", line 858, in main
testresults=getsanityresults(pL)
 File "C:\Dropbox\scripts\announce_build_wcn\wcnbuild_release.py", line 733, in   getsanityresults
  dom = minidom.parse(xmlfile)
File "C:\python2.7.3\lib\xml\dom\minidom.py", line 1920, in parse
   return expatbuilder.parse(file)
File "C:\python2.7.3\lib\xml\dom\expatbuilder.py", line 922, in parse
fp = open(file, 'rb')
IOError: [Errno 2] No such file or directory: '<root>\n    <PL name = "MSM8930.LA.2.0-PMIC-8917">\n
4

2 に答える 2

1

functioncall を に置き換えましたfile = open('config\\' + productLine + '.xml','r')。動作しているようですが、なぜですか?

名前が微妙に異なる 2 つの変数があります。

xmlfile=xml(productline) // replace with file = open('config\\' + productLine + '.xml','r')

productline(小文字l) とproductLine(大文字)がありますL

両方のケースで同じ変数を使用すると、より一貫した結果が得られる可能性があります。

于 2012-11-20T21:41:56.080 に答える
1

minidom.parse()パラメータとしてファイル名またはファイルオブジェクトのいずれかを期待していますが、ファイルの内容を渡しています。これを試してください:

import os
from xml.dom import minidom

doc = minidom.parse(os.path.join('config', productline + '.xml'))

有利な特定の要件がない限りminidomxml.etree.cElementTreePython で xml を操作するために使用します。よりPythonicでlxmlあり、より複雑なケースで必要になる可能性があるAPIをサポートしているため、2回学習する必要はありません.

于 2012-11-20T22:50:45.553 に答える