gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 20:13:11 26 4
gpt4 key购买 nike

我正在为我的脚本编写一个小型命令行实用程序,但我不知道如何从参数中正确获取完整路径。

这就是我的意思。

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 中是否有某种内置功能允许从相对路径获取完整路径?

最佳答案

编辑:Alex's answer展示了如何通过简单地填充 add_argumenttype 参数来使 argparse 管理相对到绝对路径的转换。


我不认为 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))

关于python - 使用 Argparse 从相对路径获取完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55257955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com