在python3中,在未知(用户输入)文件路径上操作时,需要支持./r*/*.dat
. 计划是使用这样的东西(简化):
paths = []
for test in userinputs:
paths.extend(pathlib.Path().glob(test))
这对相对路径很有用;但是,当用户提供绝对路径(他们应该被允许这样做)时,代码会失败:
NotImplementedError: Non-relative patterns are unsupported
如果它是一个“简单”的 glob,例如/usr/bin/*
,我可以执行以下操作:
test = pathlib.Path("/usr/bin/*")
sources.extend(test.parent.glob(test.name))
但是,就像我的第一个路径示例一样,我需要考虑路径的任何部分中的通配符,例如/usr/b*/*
.
有没有一个优雅的解决方案?我觉得我错过了一些明显的东西。
Path()
为其起始目录接受一个参数。
为什么不测试输入以查看是否为绝对路径,然后将其初始化Path()
为根目录?就像是:
for test in userinputs:
if test[0] == '/':
paths.extend(pathlib.Path('/').glob(test[1:]))
else:
paths.extend(pathlib.Path().glob(test))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句