argument of type 'NoneType' ist nicht iterierbar
Ich versuche, öffnen Sie ein Verzeichnis enthält eine Reihe von XML in einem bestimmten Verzeichnis.
In dem folgenden code bin ich Durchlaufen jedes XML-Dokument, und ich werde einige "if-Anweisungen", um den text Lesen in der XML, keywords finden und ersetzen Sie Sie, und schreiben Sie dann eine neue Datei an eine neue Position.
Ich erhalte die folgende Fehlermeldung, wenn ich das Skript ausführen:
Traceback info:
File "Z:\ESRI\Python\Test Scripts\ElementTree6.py", line 62, in <module>
if "%begdate%" in element.text:
...
Fehler Info:
argument of type 'NoneType' is not iterable
Habe ich hart codiert in das Verzeichnis eine bestimmte XML-und wenn ich laufen durch die if-Anweisungen, die Sie gut funktionieren.
Es ist, wenn ich versuchen, bis zum Durchlaufen einer Reihe von XML ist, dass ich in der error.
Ich suchte über diese Website zu sehen, wenn ich könnte die endgültige Lösung, aber alle Probleme sind entweder Verschieden von den meinigen, oder ich bin nicht ganz verstehen, die Arbeit zu umgehen.
Ich habe eine Reihe von Linien drucken Sie zum testen der Ausgänge.
Alles funktioniert gut, bis ich auf die if-Anweisung, und dann der Fehler entsteht.
# Location of XML's
folderPath = r"Z:\data"
# set variable to store files with extension ".xml"
for filename in glob.glob(os.path.join(folderPath, "*.xml")):
fullpath = os.path.join(folderPath, filename)
# find files and split the filename from the directory path
if os.path.isfile(fullpath):
basename, filename2 = os.path.split(fullpath)
#print "Basename = " + basename
#print "Filename = " + filename2
# set variable to store XML structure from xml file
root = ElementTree(file=r"Z:\data\\" + filename2)
#Create an iterator
iter = root.getiterator()
#Iterate
for element in iter:
#print element.text
if "%begdate%" in element.text:
BEGDATE = element.text.replace("%begdate%", BEGDATEPARAM)
element.text = BEGDATE
print element.text
. Was sehen Sie, wenn Sie hatte dies unkommentiert, BTW?InformationsquelleAutor Mike | 2011-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie feststellen, dass es viele Elemente in einem xml-Dokument enthalten keine Charakter-Daten (also text). Eines der schönen Dinge an python ist, dass nichts falsch ist, der in einem bedingten, Kopplung mit, dass, wissen, wie bedingte Anweisungen Kurzschluss bedeutet, dass es eine wirklich einfache Lösung für Ihr problem, ändern Sie die Zeile:
:
wenn kein text vorhanden ist, dann element.text ist Keiner, eine.k.eine Falsche, und dann werden Sie nicht einmal zu dem Teil, der die bedingte, die den Fehler verursacht.
if element.text is not None and "%begdate%" in element.text:
.Hey danke an alle. Das ist mein problem gelöst. Würde ich abstimmen, aber anscheinend habe ich nicht stark genug Ruf auf hier. Ich Schätze die schnellen Antworten von allen!
InformationsquelleAutor Hoons
Fehler gab würde vorschlagen, dass einer der tags, die Sie Durchlaufen enthält keinen text.
Ich denke, ein besserer Weg, dies zu tun, überprüfen Sie zu ersetzen, wenn-Anweisung mit einem der folgenden:
Das erste Beispiel prüft auf Gleichheit, die zweite verwendet ein regulärer Ausdruck, um zu sehen, wenn der " tag " enthält die Zeichenfolge. Ich bin mir nicht sicher, wie Sie reguläre Ausdrücke verarbeiten eine
None
Suche Raum... , man könnte scheitern.InformationsquelleAutor rjacks