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