Пропустить итерацию цикла чтения XML, если встречается исключение Python - PullRequest
0 голосов
/ 14 марта 2012

У меня есть функция, которая читает определенные теги из файла XML.Я пытаюсь сделать так, чтобы, если теги не существовали (переменная для назначения тега не выполнялась), вызывалось исключение, и файл перемещался в другой каталог, а следующий файл считывался.

Вот моя функция:

def iterateOverXml():
    localPath = "C:\local"
    remotePath = "C:\outbox"
    errorPath = "C:\Error"
    xmlFiles = glob.glob1(localPath,"*.xml")
    for file in xmlFiles:
        print file
        a = os.path.join(localPath,file)
        element = etree.parse(a)


        try:
            data= element.xpath('//Foobar/Data/node()')
            parsedData = [{field.tag: field.text for field in data} for action in data]
            xmlType = parsedData[0]['FormType']
        except:
            shutil.move(os.path.join(localPath,file),errorPath)


        if xmlType == 'record':
            parseTitle(element)
            parseTracks(element)
            parseArtist(element)
            shutil.move(os.path.join(localPath,file),remotePath)

Как мне сделать так, чтобы, если исключение было выполнено, оно одновременно перемещало файл, текущая итерация была остановлена, и вызывался следующий файл?1008 *

1 Ответ

3 голосов
/ 14 марта 2012

Как сделать так, чтобы при соблюдении исключения он одновременно перемещал файл и переходил к следующему файлу?

Просто используйте continue:

for file in xmlFiles:
    # ...

    try:
        # ....
    except:
        shutil.move(os.path.join(localPath,file),errorPath)
        continue  # <---- Will continue at the top of the for loop
                  #       with the next file in xmlFiles
...