Python 打开嵌套文件结构中引用的文件

Python 打开嵌套文件结构中引用的文件,python,nested,structure,Python,Nested,Structure,我有一个xml文件结构,其中主xml引用一些其他xml文件(具有完整路径),而这些其他文件引用其他文件,以此类推。 我有很多xml文件(在一个简单的文件夹结构中,只有一个主文件夹和3个子文件夹),但并不是所有的xml文件都在其他xml文件中引用,所以我的想法是只使用引用的xml文件构建一个列表 [编辑] 这是一个非常简单的xml文件示例。main.xml与此非常相似。其他文件没有子标记,因此它们是嵌套参照线的终点 <?xml version="1.0" encoding="UTF-8"

我有一个xml文件结构,其中主xml引用一些其他xml文件(具有完整路径),而这些其他文件引用其他文件,以此类推。 我有很多xml文件(在一个简单的文件夹结构中,只有一个主文件夹和3个子文件夹),但并不是所有的xml文件都在其他xml文件中引用,所以我的想法是只使用引用的xml文件构建一个列表

[编辑] 这是一个非常简单的xml文件示例。main.xml与此非常相似。其他文件没有子标记,因此它们是嵌套参照线的终点

 <?xml version="1.0" encoding="UTF-8" ?>
 <file>
   <indiv>
        <name>Name Surname</name>
        <birth> Oct 1826 </birth>
        <death> Jan 1850 </death>        
   </indiv>
   <children>
        <chname1>Name1 Surname1</chname1>
        <chcode1>F45DH3</chcode1><chdata1>C:\base\codedb\F45DH3.xml</chdata1>
        <chname2>Name2 Surname2</chname2>
        <chdata2>C:\base\namedb\name2sur2.xml</chdata2>
   </children>
 </file>

所以我自己找到了答案

如果它可以帮助其他人,它就像使用函数一样简单

请记住,当并非文件夹结构中的所有文件都在其他文件中引用时,此方法非常有用,因此您需要读取主文件,然后在下一个级别继续读取引用的文件

如果您想在文件夹结构中的所有文件中查找文件引用,请忘记这一点。只需读取文件夹和子文件夹中的每个文件

def xmlRefs(filepath):
    with open(filepath) as f:
        for line in f:
            if "C:\\base" in line:
                start = line.find('C:\\base')
                end = line.find('.xml')
                path = line[start:end + 4]

                if path not in xmlList:
                    x.append(path)
                    xmlList.append(path)
                    print path
                    xmlRefs(path)

coreFile= r"C:\\base\\main.xml"
xmlList = []
xmlRefs(coreFile)

main.xml
示例数据添加到问题中。@RedBoy完成。谢谢您不需要关心引用的级别。只需浏览每个文件,写下你找到的每一个新引用,你就完成了。@Goyo你会怎么做?请记住,并非我文件夹结构中的所有XML文件都在其他文件中引用,因此我不想阅读它们或对其中其他文件的任何引用。如果需要更多解释,请告诉我。没有必要在不问我或不告诉我原因的情况下,对线程给出否定点。如果我发现它很容易解决,我就不会问了。谢谢
def xmlRefs(filepath):
    with open(filepath) as f:
        for line in f:
            if "C:\\base" in line:
                start = line.find('C:\\base')
                end = line.find('.xml')
                path = line[start:end + 4]

                if path not in xmlList:
                    x.append(path)
                    xmlList.append(path)
                    print path
                    xmlRefs(path)

coreFile= r"C:\\base\\main.xml"
xmlList = []
xmlRefs(coreFile)