首页 > 解决方案 > 是否可以在 python3 的 argparse 中添加“-”标志?

问题描述

像 dnsgen 这样的工具适用于这两种类型的选项:
没有任何参数:
cat domains.txt | dnsgen - | someotherprogram
有参数:
dnsgen -w wordlist filename.txt

我可以让我的程序-在没有参数的情况下使用,即dnsgen -样式。可以说我的代码是这样的,它可以从标准输入和单词列表接收数据

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-w', '--wordlist', help="Wordlist")
argv = parser.parse_args()
my_awesome_function(argv.wordlist)

所以,我的代码只从 wordlist 中读取。我怎样才能通过 wordlist 和 stdin 使用-参数样式来做到这一点?

标签: pythonpython-3.xargumentscommand-line-argumentsargparse

解决方案


可能不是一个优雅的解决方案,但是,您可以分配一个虚拟变量并使其store_true如下所示。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-', "--_", action='store_true')
parser.add_argument('-w', '--wordlist', help="Wordlist")
argv = parser.parse_args()
my_awesome_function(argv.wordlist)

推荐阅读