增加对pathlib的支持。将对象路径到arcpy

2255
14
04-09-2020 09:20
状态:在考虑
ScottDavis
通过
偶然的因素

pathlib似乎是Python 3中使用系统路径的首选方法。我们已经开始用它来代替' os。我最近在我们办公室工作,非常喜欢它。但是,我们在使用arcpy时遇到了问题。例如:

Workspace = pathlib。路径('C:\some Path ') \ 'anotherfolder' \ '连接。使用arcpy.EnvManager(workspace=workspace): pass

抛出以下错误:"RuntimeError: Object: error in access environment "

为了解决这个问题,我们最终用str()包装所有的Path对象。例如:

工作区= str(pathlib.;)Path('C:\some Path ') \ 'anotherfolder' \ 'connection.sde')与arcpy.EnvManager(workspace=workspace): pass

如果arcpy (Pro版本)本地处理这些Path对象就太好了!

标签(2)
14日的评论
GISTeam4
通过

这将非常感激。在python3中,我们希望充分利用新的东西,如Pathlib和f-strings。

chrismartinEsri

从3.4开始,标准库就包含了pathlib库。由于这些面向对象的路径为标准操作系统库工具提供了巨大的改进,因此人们普遍倾向于使用这些路径。我发现大多数工具(即我使用过的所有工具)不支持Path对象,并迫使我在执行工具之前将它们转换为字符串。我认为工具应该隐式地处理这种类型转换,以便最终用户可以使用Path对象或路径的字符串表示而不发生冲突。

BlakeTerhune
通过 常规赛MVP

当使用从pathlib创建的路径时,arcpy.da.SearchCursor()返回

'in_table'不是一个表,也不是一个特性类

如果路径是用str()格式化的,它可以正常工作。希望有一种方法,游标和其他相关的东西,可以接受来自pathlib的本机对象。请看这篇相关文章使用pathlib和SearchCursor

JoeBorgione
通过 尊敬的贡献者

@BlakeTerhune看了你之前的文章,pathlib的优势是什么?

BlakeTerhune
通过 常规赛MVP

@JoeBorgione我找到了一个很好的摘要在这里.另请参阅官方文档比较来自OS模块的路径相关工具。

KoryKramer
通过 188金宝搏网址导航188金宝博复式Esri社区版主
ShaunWalbridge
状态变为:在考虑

我同意使用pathlib路径是一个比普通字符串和os更好的体验。anipulations路径。我们正在考虑这项工作,我将在我们的内部问题Python #1795中链接到它。我们估计这是一个较大的变化,因为目前有许多不同的地方显式地只传递字符串,并期望对象是字符串,而不需要进一步检查。我认为这也回避了从可用的地方取回pathlib对象的问题,这是另一个层次。

KoryKramer
通过 188金宝搏网址导航188金宝博复式Esri社区版主

良好的更新@ShaunWalbridge鉴于这个的最新状态,你或者@匿名用户更新客户的想法到“考虑中?”

谢谢你!

ShaunWalbridge
状态变为:在考虑

与普通字符串和os相比,使用pathlib路径是一种更好的体验。anipulations路径。我们正在考虑这项工作,但估计这是一个更大的变化,因为目前有许多不同的地方,我们显式地只传递字符串,并期望对象是字符串,而不需要进一步检查。

ShaunWalbridge

@KoryKramerOK也将其发布为公众问题的考虑之中。