0

如果可能的话,我想知道如何使用 argparse 获取脚本的存储路径,因为如果我从另一个路径运行脚本(我在 %PATH% 变量中有脚本的路径),它默认使用相对路径。

我知道我可以使用以下方法获得它:

import sys sys.argv[0]

但我想知道是否可以直接从 argparse 模块访问它。

谢谢编辑:我有我的回复,我很满意。为了更好地解释这个问题:我有一个名为 mdv.py 的脚本,用于将 markdown 文件转换为 html。我想从我电脑的任何位置调用它。脚本位于:c:\Python27\markdown

在此路径中,还有其他文件和文件夹模板,用于生成我的 HTML(默认样式表和页眉、正文和页脚文件)。

这些文件位于:C:\Python\27\markdown\markdown\templates

当我从非标准路径调用脚本时,例如 c:\dropbox\public 它会在 c:\dropbox\public\templates 中查找这些文件,而不是在保存它们的 c:\python27\markdown\templates 中查找。

我希望有更好的解释。对不起,我不是以英语为母语的人。

4

1 回答 1

2

认为您正在寻找prog参数;您可以使用 插入sys.argv[0]到您的帮助字符串中%(prog)s

的值prog可以在创建ArgumentParser()实例时设置;它是第一个参数:

parser = argparse.ArgumentParser('some_other_name')

并且可以使用.prog属性检索:

print(parser.prog)  # prints "some_other_name"

但是argparse调用os.path.basename()此名称,并且不会程序的目录存储在任何地方。

于 2013-07-01T13:56:17.413 回答