Python minidom挂起PySide应用程序

时间:2016-12-05 09:19:47

标签: python xml qt pyqt pyside

我正在使用PySide制作应用程序。我有一个目录树小部件,它应列出具有特定预定义深度的目录视图。这些文件夹大多来自服务器位置。我正在使用glob模块列出具有预定义深度的文件夹。我使用minidom模块使用此目录列表构建一个xml文档,稍后将使用该模块在树窗口小部件中构建项目。 但在某些时候我的应用程序冻结,结果是没有响应。这是我的代码。

import glob, os
from xml.dom import minidom
dirs = []
limit = 3
root = "S:/assets"
for i in range(1, limit + 1):
    depth = []
    [depth.append(
        os.path.abspath(x)) for x in glob.glob(
        root + "/*" * i)]
    for each in depth:
        if "." not in os.path.split(each)[-1]:
            dirs.append(each)
dirs.sort()

def showDirectory(base, dirs):
    dirDict = {}
    doc = minidom.Document()
    root = doc.createElement("root")
    for each in dirs:
        items = os.path.split(each)
        if items[-1] == "":
            continue
        elm = doc.createElement("dir")
        elm.appendChild(doc.createTextNode(items[-1]))
        par = os.path.split(items[0])[-1]
        dirDict[items[-1]] = elm
        if os.path.abspath(items[0]) == os.path.abspath(base):
            dirDict[items[-1]] = root.appendChild(elm)
        else:
            dirDict[par].appendChild(elm) # this line is the problem
    doc.appendChild(root)
    return doc

# test
with open("D:/test.xml", "w") as f:
    showDirectory(root, dirs).writexml(f)

问题不在于我的应用,因为在许多其他场景中使用了相同的树窗口小部件。如果我评论我标记为有问题的行,一切正常。

我做错了吗?任何帮助都非常感谢。 感谢

0 个答案:

没有答案