python - 当存在长标识符时,argparse 会排除短标识符
问题描述
我正在尝试向同一个参数添加一个字符和一个关键字,这意味着我可以按值或关键字引用,例如:python my_module.py -k abc
或者python --keyword abc
我希望两者都能工作但是当我添加一个名称并调用时args.k
我得到一个命名空间错误。我查了一下here,发现一些问题都在问同样的错误,但没有人回答我的问题。
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument('-w', '--website',
help='Website that returns ip address as response content',
default='http://icanhazip.com')
parser.add_argument('-f', '--file',
help='File containing raw proxies delimited by \n',
default='proxy_urls.txt')
parser.add_argument('-t', '--timeout', help='Request timeout', default=10, type=int)
parser.add_argument('-s', '--socks', help='4 or 5 for SOCKS version', default='')
parser.add_argument('-j', '--jobs', help='Number of parallel jobs', default=4, type=int)
parser.add_argument('-o', '--output', help='Output destination', default='.')
args = parser.parse_args(argv)
tester = ProxyTester(args.f, args.w, args.t, args.s)
tester.test_proxies(args.j, args.o)
if __name__ == '__main__':
main(sys.argv[1:])
在:
>> python3 proxy_tester.py
出去:
Traceback (most recent call last):
File "proxy_tester.py", line 152, in <module>
main(sys.argv[1:])
File "proxy_tester.py", line 147, in main
tester = ProxyTester(args.f, args.w, args.t, args.s)
AttributeError: 'Namespace' object has no attribute 'f'
这是输出print(args)
:
Namespace(file='proxy_urls.txt', jobs=4, output='.', socks='', timeout=10, website='http://icanhazip.com')
解决方案
推荐阅读
- c++ - 与类相关的可变变量,而不是对象
- java - 如何显示与我的 GWT Web 应用程序上的元素相关(以任何方式)的所有类文件,以便在客户端进行调试?
- c# - UWP Windows 10 IoT 2 通道同时录音
- c# - 在 Linq 查询中用类型名称替换 var
- ios - 比较一个结构的两个值并在 UITableView swift 4.0 中获取额外的单元格
- javascript - 如何在 React 中更改字体颜色、字体大小和按钮颜色
- scala - Scala:oneSet.diff(otherSet) 不工作
- java - Java 字符串 S="{({)}}"
- corda - 非参与方可以更新corda中的状态吗?
- java - 2018-05-19T04:51:29.6702751+00:00 的 SimpleDateFormat