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

1922
7
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)
7评论
GISTeam4
通过

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

BlakeTerhune
通过 常规赛MVP

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

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

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

JoeBorgione
通过 尊敬的贡献者

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

BlakeTerhune
通过 常规赛MVP

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

ShaunWalbridge
状态变为:在考虑

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

BlakeTerhune
通过 常规赛MVP

谢谢您的考虑@ShaunWalbridge: smiling_face_with_smiling_eyes:

EthanSchaefer
通过

在我看来,一个(部分?)解决方案是包装每个函数/方法,以便任何传递的对象与__fspath__方法被转换为调用该方法的结果。这本质上与os.fspath()背后的逻辑相同,它返回任意字符串不变,即使它们不可能表示路径。当然,它的路径序列也必须被覆盖,这也可以被容纳。但如果有我没有预料到的更复杂的情况,它们可能就更难支持了。

顺便提一下,我概述的基本方法是在动态生成脚本并通过丙基.bat传递脚本时如何处理这个问题(在抽象级别上)。