检查simplekml中是否存在Folder - python

时间:2017-08-08 03:23:49

标签: python containers directory kml

这应该是非常容易的,但我现在已经花了一个小时在网站上没有尽头。我在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文件中的每个容器来查找文件夹,然后在找不到它之前编写它。请告诉我有更好的方法吗?!

1 个答案:

答案 0 :(得分:1)

这是因为,kml.containers保存了类simplekml.featgeom.Folder的对象列表,name是该类的属性!

因此,当您检查if 'testfolder' in kml.containers时,它会返回false!您必须获取该容器的name属性中的值,然后检查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