在Python中解析目录中的每个文件?

2024-03-29 05:12:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这个代码:

import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()

for segment in root.iter("s"):
    for word in segment.iter("w"):
        print word.text,
    print "\n"

它将解析xml文件测试.xml并打印解析后的输出。但是,我有大量的这些xml文件需要在一个目录中进行解析。如何修改代码,使其遍历目录中的每个文件并对其应用此函数?在

谢谢!在


Tags: 文件代码inimport目录treeforsegment
2条回答

这应该是有效的:

def printParsed(filename):
    tree = ET.parse(filename)
    root = tree.getroot()

    for segment in root.iter("s"):
        for word in segment.iter("w"):
            print word.text,
        print "\n"

if __name__ == "__main__":
    from os import listdir
    from os.path import isfile, join
    mypath ='path/to/your/xml/files'
    onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
    for f in onlyfiles:
        # only does stuff if the file ends in xml
        if f[-3:] = '.xml':
            printParsed(f)

您可以将文件保存为parser.py,然后像python parser.py那样运行它。如果需要,也可以删除if __name__ == "__main__"部分。在

使用os.listdir(path)

它返回目录中所有文件的列表。在

代码:

import xml.etree.ElementTree as ET
import os
listofxml = os.listdir("./")
    for xml in listofxml:
        tree = ET.parse(xml)
        root = tree.getroot()

        for segment in root.iter("s"):
                for word in segment.iter("w"):
                        print word.text,
                print "\n"

如果不是所有文件都是xml,则可以拆分并检查:

^{pr2}$

相关问题 更多 >