【发布时间】:2018-06-29 19:27:59
【问题描述】:
如果我得到一个字符串形式的路径,例如“~/pythoncode/*.py”,那么在pathlib 中将其全局化的最佳方式是什么?
使用 pathlib,有一种方法可以使用 glob 附加到路径:
p = pathlib.Path('~/pythoncode/').expanduser().glob('*.py')
但是,例如,这不起作用,因为用户没有展开:
p = pathlib.Path().glob('~/pythoncode/*.py')
这会产生一个异常,因为我没有向 glob() 提供任何参数:
p = pathlib.Path('~/pythoncode/*.py').expanduser().glob()
有没有办法在pathlib 中做到这一点,还是我必须先解析字符串?
【问题讨论】:
-
我认为你的问题本身就可以回答,但我可能是错的
-
查看
PurePath.parts -
我相信
os.path.expanduser()是一个无操作直通,如果没有什么可扩展的,所以你可以做类似Path().glob(os.path.expanduser('~/pythoncode/*.py'))的事情 -
@jedwards:
NotImplementedError: Non-relative patterns are unsupported -
@MadPhysicist:我认为它只有在我没有忽略某些东西的情况下才会自行解决——这似乎是因为我缺乏使用这个库的经验。
pathlib非常完整,我希望通过正确的调用顺序,它可以更接近地模仿 shell 并进行完整的扩展。
标签: python python-3.x glob pathlib