Python 如果遇到异常,则跳过XML读取循环的迭代

Python 如果遇到异常,则跳过XML读取循环的迭代,python,mysql,xml,sorting,lxml,Python,Mysql,Xml,Sorting,Lxml,我有一个函数,可以从XML文件中读取某些标记。我试图这样做,如果标记不存在(变量到标记分配失败),则调用异常,并将文件移动到另一个目录,然后读入下一个文件 以下是我的功能: def iterateOverXml(): localPath = "C:\local" remotePath = "C:\outbox" errorPath = "C:\Error" xmlFiles = glob.glob1(localPath,"*.xml") for file

我有一个函数,可以从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)
如果遇到异常,如何使其同时移动文件当前迭代停止并调用下一个文件?

如果遇到异常,如何使其移动文件并跳到下一个文件

只需使用
继续

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
对于xmlFiles中的文件:
# ...
尝试:
# ....
除:
move(os.path.join(localPath,file),errorPath)
继续
如果遇到异常,如何使其移动文件并跳到下一个文件

只需使用
继续

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
对于xmlFiles中的文件:
# ...
尝试:
# ....
除:
move(os.path.join(localPath,file),errorPath)

继续#“跳到下一行”是什么意思?停止当前迭代并读取下一个文件。顺便说一句,如果你想在字符串中放入一个文本
\
,你应该将其写为
\
,或者使用“原始字符串”(
r“C:\…”
),因为
\
是转义字符。我想的是同样的事情,但我的路径是一样的“C:\收件箱“工作正常,不会出错。知道为什么吗?如果
\
以无法识别的顺序使用,它将被解释为文本
\
,尽管这是一种糟糕的样式。在您的示例中,
\I
不是已知的转义序列,但在
C:\new\u files
中,
\n
将替换为换行符。您所说的“跳到下一行”是什么意思?停止当前迭代并读取下一个文件。顺便说一句,如果要将文本
\
放入字符串中,你应该把它写成
\\
,或者使用“原始字符串”(
r“C:\…”
),因为
\
是转义字符。我也这么认为,但我的路径“C:\Inbox”是有效的,不会出错。知道为什么吗?如果
\
以无法识别的顺序使用,它将被解释为文本
\
,尽管这是一种糟糕的样式。在您的示例中,
\I
不是已知的转义序列,但在
C:\new\u files
中,
\n
将替换为换行符。因此,这将中断文件的当前迭代并重新开始?它不会重新开始,它将跳过当前迭代并继续下一个迭代。因此,这将中断文件的当前迭代并重新开始?它不会重新开始,它将跳过当前迭代并继续下一个迭代。