我有几个文件夹,其中有a.shp或b.shp,还有一些其他杂项文件。或者,一个文件夹可以同时包含a.shp和b.shp。在这种情况下,我想选择a.shp。如果一个文件夹没有这两个文件,我将从分析中排除该文件夹。在
我必须编写如下python代码:
if folder1 has a.shp only:
myunit = r"D:\folder1\a.shp"
elif folder2 has b.shp only:
myunit = r"D:\folder2\b.shp"
elif folder3 has a.shp and b.shp:
myunit = r"D:\folder3\a.shp"
elif folder4 doesn't have a.shp and b.shp:
Don't assign anything into myunit.
如果有人能就如何在Python中实现这一点提供建议,我将非常感谢。在
谢谢。在
如果你想避免导入os.path.exists这样,你可以使用try/catch逻辑。如果a在那里,你总是想要它,所以你可以试着打开它。如果不起作用,捕获错误并尝试打开b。如果不起作用,则捕获错误并忽略该文件夹。在
来自docs(ctrl+f表示“异常”)的代码段,显示了建议的方法:
同样来自文档,一个片段显示了操作系统路径正如Gareth所描述的:
^{pr2}$但文件引用这段话是为了反对它。Python故意提供优雅的异常处理;在执行之前,利用这一点比担心C风格的偏执检查更为惯用。如果你想这么做操作系统路径不管怎样,不管怎样。不管怎样都可以。在
听起来好像您想要}。您可能还需要
os.path.exists
,它以路径名作为参数,根据存在的文件(或目录)的名称返回True
或{os.path.join
来构造文件名。在我认为你的代码与你的问题描述不一致。 我假设问题描述正确,因此我创建了一个函数来过滤您需要的dir:
然后使用一些文件夹尝试该函数并查看结果:
^{pr2}$相关问题 更多 >
编程相关推荐