使用 argparse 忽略 CLI 参数中的 substring/linebreak 字符
Ignoring a substring/linebreak character in CLI arguments using argparse
我是第一次使用 Python 中的 argparse 模块,而且我已经一年多没有接触过这门语言了。
我需要解决待办事项列表中的一个错误,如果用换行符输入新任务,它会创建两个条目而不是一个条目,例如:
$ python todo.py add "Hello,
World!"
将创建条目:
0 Hello,
1 World!
有没有办法告诉 argparse 忽略换行符?我试过查看文档,但没找到。
从参数中删除每个换行符,然后将它们传递给 parse_args
或 parse_known_args
:
ArgumentParser.parse_args([arg.replace("\n", "") for arg in sys.argv[1:]])
由于ArgumentParser
默认使用sys.argv
(https://github.com/python/cpython/blob/0924b95f6e678beaf4a059d679515956bac608fb/Lib/argparse.py#L1870),你也可以在解析前修改sys.argv
,方法相同:
sys.argv = sys.argv[0] + [arg.replace("\n", "") for arg in sys.argv[1:]]
ArgumentParser.parse_args()
或者,您仍然可以覆盖 parse_known_args
,因为这是完成解析的地方。
我是第一次使用 Python 中的 argparse 模块,而且我已经一年多没有接触过这门语言了。 我需要解决待办事项列表中的一个错误,如果用换行符输入新任务,它会创建两个条目而不是一个条目,例如:
$ python todo.py add "Hello,
World!"
将创建条目:
0 Hello,
1 World!
有没有办法告诉 argparse 忽略换行符?我试过查看文档,但没找到。
从参数中删除每个换行符,然后将它们传递给 parse_args
或 parse_known_args
:
ArgumentParser.parse_args([arg.replace("\n", "") for arg in sys.argv[1:]])
由于ArgumentParser
默认使用sys.argv
(https://github.com/python/cpython/blob/0924b95f6e678beaf4a059d679515956bac608fb/Lib/argparse.py#L1870),你也可以在解析前修改sys.argv
,方法相同:
sys.argv = sys.argv[0] + [arg.replace("\n", "") for arg in sys.argv[1:]]
ArgumentParser.parse_args()
或者,您仍然可以覆盖 parse_known_args
,因为这是完成解析的地方。