如何为argparse提供一个有理数或无理数?

时间:2018-12-28 20:41:57

标签: python terminal argparse rational-number

如何使用argparse通过终端将3/2之类的有理数输入我的python脚本中? 当我想使用argparse输入pi或其他任何不合理的数字(如sqrt(2))时,我也会遇到同样的问题。

关于, 哈迪

1 个答案:

答案 0 :(得分:0)

使用

import argparse
import sys
print(sys.argv)
parser = argparse.ArgumentParser()
parser.add_argument('aNumber')
args = parser.parse_args()
print(args)

示例运行:

1414:~/mypy$ python3 stack53964076.py -h
['stack53964076.py', '-h']
usage: stack53964076.py [-h] aNumber

positional arguments:
  aNumber

optional arguments:
  -h, --help  show this help message and exit
1417:~/mypy$ python3 stack53964076.py 3/2
['stack53964076.py', '3/2']
Namespace(aNumber='3/2')
1417:~/mypy$ python3 stack53964076.py pi
['stack53964076.py', 'pi']
Namespace(aNumber='pi')
1417:~/mypy$ python3 stack53964076.py sqrt(2)
bash: syntax error near unexpected token `('
1417:~/mypy$ python3 stack53964076.py 'sqrt(2)'
['stack53964076.py', 'sqrt(2)']
Namespace(aNumber='sqrt(2)')

在所有这些情况下,args.aNumber将是一个字符串。在最后一种情况下,我必须加引号以防止外壳程序尝试解析'('本身。

处理这些字符串是您自己的代码的责任,而不是argparse