2016-12-22 3 views
0

lxmlを使用して異なるフォルダから複数のXMLファイルを解析しようとしています。私はos.walk()fnmatch.filter()を使用してxmlファイルを見つけます。たとえば、フォルダ名testlogから検索します。このフォルダにはさらにサブフォルダがあり、その中にはすべてresult.xmlのxmlファイルがあります。そして、これらのxmlファイルを解析して、 result.xml ごとにReportlabを使用してPDFを生成しようとしています。lxmlを使用して異なるフォルダ内の複数のxmlファイルを解析する

import os 
from lxml import etree 
import fnmatch 

path = 'C:/Users/Name/Desktop/testlog' 

for root, dirs, files in os.walk(path): 
    for files in fnmatch.filter(files, 'result.xml'): 
#  print files 
     tree = etree.parse(files) 

と私は、ファイルを印刷する場合、私が記載されているすべてのresult.xmlファイルを取得することができますが、私は解析しようとしているならば、私は次のエラーを取得する:と解析のための私のコードがある

IOError: Error reading file 'result.xml' : failed to load external entity "result.xml" 

これを解決する方法を教えてもらえますか?前もって感謝します。

答えて

0

ファイルはファイルの名前です。 rootは、それが入っているディレクトリへのパスです。あなたは、その特定のファイルを開くために2つを組み合わせる必要があります(例えば、os.path.joinを使って)。

+0

私はそれらをうまく結合しましたが、私はこれを得ます: "ファイル" /usr/lib64/python2.7/posixpath.py "、行77、参加時 elifパス== ''またはパス.endswith( '/'): AttributeError: 'lxml.etree._Element'オブジェクトには属性 'endswith' "がありません。何か案は? –

+1

あなたはこの質問の著者ではないようです。どのようなコードを実行していますか? –

+0

'ディレクトリ= os.getcwd()ルートの 、dirsに、os.walk内のファイル(ディレクトリ):ファイル内のファイルの \t: \t場合(file.endswith() 'XML'): \t \t \t \t \t \t \t \t DOC = os.path.join(os.sep、根、ファイル) \t \t \t \t \t \t DOC = TXTとしてオープン( 'test.txtの'、 'A')とstr(doc) \t \t \tツリー= ET.parse(DOC) \t \t \tルート= tree.getroot() ' 私はドキュメントをプリントアウトした場合、それは完全なパスを示しているが、どこにも届きません。このコードは、プログラムがxmlファイルと同じフォルダにある場合にはうまく動作しますが、ディレクトリにある場合は失敗します。 –

関連する問題