简体   繁体   English

如何将有理数或无理数提供给 argparse?

[英]How can I feed a rational or irrational number to argparse?

How can I feed rational numbers like 3/2, through terminal, into my python script using argparse?如何使用 argparse 通过终端将像 3/2 这样的有理数输入到我的 python 脚本中? I have the same problem when I want to input pi or any other irrational numbers like sqrt(2) using argparse.当我想使用 argparse 输入 pi 或任何其他无理数(如 sqrt(2))时,我遇到了同样的问题。

Regards, Hadi问候, 哈迪

With

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

sample runs:示例运行:

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)')

In all these cases args.aNumber will be a string.在所有这些情况下args.aNumber将是一个字符串。 In the last case I had to include quotes to prevent the shell from trying to parse the '(' itself.在最后一种情况下,我必须包含引号以防止 shell 尝试解析 '(' 本身。

Handling these strings is the responsibility of your own code, not argparse .处理这些字符串是您自己的代码的责任,而不是argparse

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM