python - Python - Argparse:调用帮助参数返回错误
问题描述
这是代码:https ://github.com/zSucrilhos/programming/blob/master/Python/psw-generator-ASCII-1.9.5-CLI-t7.py
在 Repl.it 上:https ://repl.it/@ErickCesar/PushyFabulousTask
这是一个密码生成器,我是为了好玩而做的,主要是为了学习 Python。正如预期的那样,它工作正常,我设置了以下参数:
-np, --repeat = Generate more than one psw at a time (default=1)
-pl, --length = Password length (default=25 chars)
-pt, --type = Password's type; Can be one of the following:
1 - UPPERCASE ONLY
2 - lowercase only
3 - 1234567890 only
4 - !@#$%¨&* only
5 - Mixed 12ab!@
问题是默认的“帮助”参数(-h,--help)。当我尝试运行程序时,它会显示一条很大的错误消息:
C:\Users\Pentium IV 641\Desktop\programming\programming\Python>python psw-generator-ASCII-1.9.5-CLI-t7.py -h
Traceback (most recent call last):
File "psw-generator-ASCII-1.9.5-CLI-t7.py", line 118, in <module>
arguments = parser.parse_args()
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 1730, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 1762, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 1968, in _parse_known_args
start_index = consume_optional(start_index)
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 1908, in consume_optional
take_action(action, args, option_string)
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 1836, in take_action
action(self, namespace, argument_values, option_string)
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 1020, in __call__
parser.print_help()
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 2362, in print_help
self._print_message(self.format_help(), file)
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 2346, in format_help
return formatter.format_help()
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 282, in format_help
help = self._root_section.format_help()
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 213, in format_help
item_help = join([func(*args) for func, args in self.items])
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 213, in <listcomp>
item_help = join([func(*args) for func, args in self.items])
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 213, in format_help
item_help = join([func(*args) for func, args in self.items])
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 213, in <listcomp>
item_help = join([func(*args) for func, args in self.items])
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 519, in _format_action
help_text = self._expand_help(action)
File "C:\Users\Pentium IV 641\AppData\Local\Programs\Python\Python36-32\lib\argparse.py", line 606, in _expand_help
return self._get_help_string(action) % params
ValueError: unsupported format character '?' (0xa8) at index 154
尝试自己添加-h
and--help
参数,但没有帮助。错误将以相同的方式显示。
在 Linux (Arch) 和 Windows 10 中都试过,同样的事情。
我不知道接下来要尝试什么,因为我不太了解错误,无法自行解决。所以我在寻求帮助。
我还去了库文件(argparse.py),看看我是否能更好地理解发生了什么(没有编辑任何东西),但我不能(这里是初学者)。提前致谢。
解决方案
问题是字符串中的这个字符 ( %
)。
4 - !@#$%¨&* 仅
如果你想打印%
使用%%
而不是%
.
像这样。
4 - !@#$%%¨&* only
这
argparse
似乎%
在参数中使用格式self._get_help_string(action)
%
,否则%
不必转义。
这是一个类似的相关问题Python string formatting when string contains "%s" without escaping
推荐阅读
- amazon-s3 - Oozie 在 EMR 上将操作数据路径从 S3 更改为 hdfs
- axios - Nuxt:在 .ENV 中设置 Axios BaseURL 不起作用?
- python - 预算午餐和晚餐的 Web Scraping Tabelog
- python - 映射 Django url 和视图
- artificial-intelligence - PDDL AI 规划中的一个错误
- entity-framework-core - 包含在实体框架中的问题
- python - Python Kivy:动态分配小部件ID的问题
- angular - 滚动加载时滚动中的角度材质虚拟滚动默认偏移量
- android - 添加flutter_contact插件后Flutter App gradle构建失败
- javascript - 将对象推入嵌套在对象数组中的对象数组中