2

这应该非常容易,但我现在已经做了一个小时,没有结束。我在 python 中使用 simplekml 模块,如果不存在,我想创建一个文件夹。在不创建 for 循环的情况下,我无论如何都无法检查文件夹是否已经存在。我认为下面会起作用,但当然不会。

    kml = simplekml.Kml()
    testfold = kml.newfolder(name = 'testfolder')
    testfold2 = kml.newfolder(name = 'testfolder2')

    if 'testfolder' in kml.containers: 
        print True

唯一似乎返回折叠名称的是:

for x in kml.containers:
    print x.name

但是,我当然不希望遍历 kml 文件中的每个容器来查找文件夹,然后再将其写入(如果找不到)。请告诉我有更好的方法吗?!

4

1 回答 1

1

那是因为,kml.containers 包含类 simplekml.featgeom.Folder 的对象列表,并且name是该类的属性!

因此,当您检查if 'testfolder' in kml.containers它时,它会返回false!您必须获取该容器的名称属性中的值,然后检查是否testfolder

>>> [each for each in kml.containers]
[<simplekml.featgeom.Folder object at 0x2ac156d8e910>, <simplekml.featgeom.Folder object at 0x2ac156d8e890>]
>>> [x.name for x in kml.containers]
['testfolder', 'testfolder2']
>>> True if 'testfolder' in [x.name for x in kml.containers] else False
True
于 2017-08-08T04:11:28.803 回答