如何在argparse中免引号传递多词位置参数?
让argparse接收无引号的多词位置参数
可行,只需修改argparse的参数配置,让text参数接收所有剩余的位置参数,再将它们拼接成完整字符串即可。
修改后的代码示例
import argparse parser = argparse.ArgumentParser(description="Create pixel art bubble speech image") # 使用nargs='+'让text接收所有后续位置参数,形成列表 parser.add_argument('text', nargs='+', type=str, help="Text inside the bubble speech") args = parser.parse_args() # 将参数列表拼接为单个字符串 full_text = ' '.join(args.text) # 后续业务逻辑使用full_text即可
效果说明
执行bubble.py hello world时,args.text会被解析为['hello', 'world'],通过' '.join()就能得到完整的hello world文本,和带引号执行的效果一致。
跨平台兼容性
这种方法适用于所有主流操作系统(Windows、macOS、Linux)。argparse是Python标准库的一部分,其nargs参数的行为在各系统下完全一致;而不同系统的命令行环境对空格分隔参数的解析逻辑,不会影响这种参数收集方式的有效性。
内容的提问来源于stack exchange,提问作者Jobo Fernandez
相关产品推荐
相关产品推荐

