使用Argparse从相对路径获取完整路径

用户3051029

我正在为脚本编写一个小的命令行实用程序,但无法弄清楚如何从参数中正确获取完整路径。

这就是我的意思。

parser = ArgumentParser()
parser.add_argument("-src",
                    required = True, help="path to some folder")
args = parser.parse_args()
print(args.src)

如果用户通过完整路径,例如"/home/username/projectname/folder",一切都很好。

但是,如果用户从假设"projectname"文件夹运行脚本并传递相对路径,则"./folder""./folder"在解析参数而不是完整路径时会得到完全相同的字符串"/home/username/projectname/folder"

因此,我一直想知道是否存在某种内置功能Argparse,可以从相对路径获取完整路径?

特里夫

编辑亚历克斯的答案显示了如何argparse通过简单地填充add_argumenttype参数来进行相对路径到绝对路径的管理


我不认为argparse提供了这样的功能,但是您可以使用os.path.abspath来实现

abs_src = os.path.abspath(args.src)

请记住,这将通过将工作目录与相对路径连接在一起而形成绝对路径。因此,该路径被认为是相对于工作目录的。


如果你想相对于脚本目录的路径做,你可以使用os.path.dirname__file__变量,os.path.join从相对于你的Python脚本的路径建立一个绝对路径:

script_dir = os.path.dirname(__file__)
abs_src = os.path.join(script_dir, args.src)

最后,由于连接路径可以包含诸如.和的标记..,因此您可以使用os.path.normpath “修饰”构建的路径

abs_path = os.path.normpath(os.path.join(script_dir, args.src))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章