【问题标题】:Is it possible to obtain the path of the script using argparse?是否可以使用 argparse 获取脚本的路径?
【发布时间】:2013-07-01 13:53:40
【问题描述】:

如果可能的话,我想知道如何使用 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 中保存。

希望有更好的解释。抱歉,我的母语不是英语。

【问题讨论】:

  • argparse 也使用sys.argv。你能详细说明你的意思吗?

标签: python command-line


【解决方案1】:

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

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

parser = argparse.ArgumentParser('some_other_name')

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

print(parser.prog)  # prints "some_other_name"

然而argparse以此名称调用os.path.basename(),并且将程序的目录存储在任何地方。

【讨论】:

  • 好的,我真正需要的是路径,因此我使用 sys.argv,但感谢您的详尽回复。
猜你喜欢
  • 2019-08-10
  • 2011-02-17
  • 2011-01-10
  • 2018-05-23
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
相关资源
最近更新 更多