我想在argparse模块中有一些选项,例如--pm-export
但是,当我尝试使用它时像args.pm-export
那样,我得到的错误是没有属性pm
。我怎样才能解决这个问题?命令行选项中是否可以有-
?在argparse中有短划线的选项
回答
作为indicated in the argparse
docs:
对于可选的参数的动作,dest的值通常从选项字符串推断。 ArgumentParser通过采用第一个长选项字符串和来剥离最初的
--
字符串来生成dest的值。 任何内部-
字符将被转换为_
字符,以确保该字符串是你应该使用args.pm_export
有效的属性名称
左右。
破折号被转换为下划线:
import argparse
pa = argparse.ArgumentParser()
pa.add_argument('--foo-bar')
args = pa.parse_args(['--foo-bar', '24'])
print args # Namespace(foo_bar='24')
不幸的是,冲至底线更换不适合positionalarguments(不--
前缀),如
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs-dir',
help='Directory with .log and .log.gz files')
parser.add_argument('results-csv', type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs-dir='./', results-csv=<open file 'lool.csv', mode 'w' at 0x9020650>)
所以工作时,你应该使用第1'参数add_argument()
作为属性名称和metavar
kwarg到设置它应该如何寻找帮助:
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs_dir', metavar='logs-dir',
nargs=1,
help='Directory with .log and .log.gz files')
parser.add_argument('results_csv', metavar='results-csv',
nargs=1,
type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs_dir=['./'], results_csv=[<open file 'lool.csv', mode 'w' at 0xb71385f8>])
相关的Python错误报告:http://bugs.python.org/issue15125。 'argparse'使用'setattr'和'getattr',所以'dest'名称不必是有效的'dot'属性名称。用户也可以使用'getattr'。 – hpaulj
我只是做'positions_arg = getattr(解析器,'位置参数')' –
正是我需要的 - 我用'metavar'向后做了,并找不出为什么它不工作。谢谢! – dwanderson
- 1. 多项短划线
- 2. 带有Python选项的选项argparse?
- 3. argparse选项选项
- 4. dot:短划线
- 5. 用短划线(' - ')在右侧用短划线填充字符串
- 6. ng-attr其中属性有短划线
- 7. 带有短划线的ASP.NET MVC路由
- 8. 在vim中用短划线加下划线文字
- 9. 在Ruby on Rails中使用短划线`-`而不是下划线`_`
- 10. 如何在IIRF规则中用'下划线'代替'短划线'?
- 11. 下划线/删除选择元素中的所有选项
- 12. PyYAML用下划线替换键中的短划线
- 13. 在FontDialog中显示颜色选项,没有下划线和删除选项
- 14. PHP中的奇怪短划线字符
- 15. 如何在内部区域用短划线代替下划线?
- 16. 简单的选择问题与 - (短划线)在哪里条款
- 17. Argparse:获取在命令行中传递的所有选项
- 18. 引用argparse中的其他选项
- 19. Rails - 想要创建一个带有短划线或下划线的控制器
- 20. 横向短划线在HTML或CSS?
- 21. 分割QString在 - (短划线)字符,列表项访问
- 22. 如何在字段中选择下划线选项
- 23. argparse多个选项组合
- 24. Python argparse选项级联
- 25. argparse连接cli选项
- 26. Sitecore项目Web Api带短划线或连字符的路径
- 27. my.cnf.d/server.cnf配置 - 短划线或下划线
- 28. 正则表达式:区分下划线(_)和短划线( - )
- 29. 正则表达式字母,数字,短划线和下划线
- 30. Fabric.js beta2 - 文本下划线选项
仅适用于可选参数。必需的连字符保持连字符,因此需要下划线才能使其可访问。 – n00dle