Python-argparse错误:pydevconsole.py: error: unrecognized arguments: --mode=client --port=51656

一、如何给argparse传入参数?

# python文件的名称为codets.py


import argparse

parse = argparse.ArgumentParser()
parse.add_argument('--txt', default='I love you!', help='Some Words Inside My Heart.')
args = parse.parse_args()

print(args.txt)

当py文件内定义了argparse模块时,大概有以下3种方法给parser解析器传入参数:

❶pycharm中的Configuration——Parameters。

❷在cmd窗口、terminal终端中执行代码 python codets.py --txt 'LOVE'

❸不想传入参数时,直接在调用add_argument方法时,指定default关键参数

比如上面的txt属性默认为"I love you"。

这样即使没有第1、2步骤的参数定义;在pycharm中run这个py文件时,不会因为缺参数而报错;在cmd窗口、terminal终端中执行代码python codets.py也不会报错。

注意不能执行python codets.py --txt,因为没有定义const关键词参数,这样在指令中拿出了相关参数却没有给它赋值时,就会出错。

有些人可能会疑惑,为什么不给它赋默认值default呢?这就涉及到const和default关键词参数之间的区别了。

二、回到正题,如何解决标题所述错误?

import argparse

parse = argparse.ArgumentParser()
parse.add_argument('--txt', default='I love you!', help='Some Words Inside My Heart.')
args = parse.parse_args()

print(args.txt)



# 如果用run执行该py文件,输出内容如下
# I love you!


# 如果用console执行上述代码,输出内容如下,报错了
# usage: pydevconsole.py [-h] [--txt TXT]
# pydevconsole.py: error: unrecognized arguments: --mode=client --port=51656

也就是说,不能用console窗口执行parse_args方法,一旦执行,就会导致console报错,并且冻结该窗口,使其变得不可编辑。

PyDev console: starting.
Python 3.8.5 (default, Sep  3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] on win32

>>>import argparse
>>>parse = argparse.ArgumentParser()
>>>parse.add_argument('--txt', default='I love you!', help='Some Words Inside My Heart.')
_StoreAction(option_strings=['--txt'], dest='txt', nargs=None, const=None, default='I love you!', type=None, choices=None, help='Some Words Inside My Heart.', metavar=None)

>>>args = parse.parse_args()
usage: pydevconsole.py [-h] [--txt TXT]
pydevconsole.py: error: unrecognized arguments: --mode=client --port=52109
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值