2017-02-13 2 views
0

特定のフォルダ/サブフォルダ内のすべてのXMLファイルを解析し、そのXML内のテキストを検索して置き換えようとしています。すべてのサブフォルダ "アーカイブ"を除外しながら。 "AttributeError: 'NoneType'オブジェクトに 'replace'属性がありません。何が紛失しているのかわかりませんが、XMLを開き、解析するためにElementTreeに到達するとループが消滅するようです。すべてのxmlファイルを再帰的に解析してフォルダを除外します

for roots, dirs, files in os.walk("C:\test", topdown=True): 
    if 'Archive' in dirs: 
     dirs.remove('Archive') 
    #dirs[:] = [d for d in dirs if 'Archive' not in d] 
    for f in files: 
     if f.endswith('.xml'): 
      try: 
       with open(os.path.join(roots, f), 'r') as xml: 
        tree = ET.parse(xml) 
        root = tree.getroot() 

        for elem in root.getiterator(): 
        try: 
         print (elem.text) 
         elem.text = elem.text.replace('_THUMBNAIL.jpg', '.mxd.jpg') 

        except ET.ParseError: 
         pass 

       tree.write(xml, encoding='utf-8') 
      except FileNotFoundError: 
       pass 

答えて

0

すべてのXMLタグにテキストがあるわけではないと思います。だからあなたは使用する必要があります

if elem.text is not None : 
    try: 
     print (elem.text) 
     elem.text = elem.text.replace('_THUMBNAIL.jpg', '.mxd.jpg') 
+0

hmmのダイス。これですべてをスキップするようだ。 – Infinity8

+0

xmlの小さな部分を表示できますか?奇妙に思える。 – VdF

関連する問題