我正在为脚本编写一个小的命令行实用程序,但无法弄清楚如何从参数中正确获取完整路径。
这就是我的意思。
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_argument
的type
参数来进行相对路径到绝对路径的管理。
我不认为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] 删除。
我来说两句