我有一个简单的python脚本,它从命令行获取输入,然后修改名称列表文件。我这样用它:
python edit_namelist.py nml section key value
问题是值可以是整数,浮点数或字符串。目前,我使用了以下内容:
def infer(s):
''' Try to parse input to integer. If it fails, keep it as string '''
try:
s = int(s)
except ValueError:
pass
return s
parser.add_argument("value",type=infer)
这是有效的,但只要我的输入是整数或字符串。我想知道是否有可能argparse
从命令行输入的格式推断变量类型,这样
python edit_namelist.py nml section key 10
python edit_namelist.py nml section key 10.
python edit_namelist.py nml section key "10"
分别被解释为整数,浮点数和字符串。
答案 0 :(得分:0)
您可以尝试使用ast.literal_eval(..)
。
import ast
def infer(s):
val = ast.literal_eval(s)
acceptable_types = (int, str, float)
if any(isinstance(val, x) for x in acceptable_types):
return val
raise SomeException("Bad Input")
答案 1 :(得分:0)
这对我有用。
wget https://www.python.org/ftp/python/3.4.0/Python-3.4.0.tgz
tar xzvf Python-3.4.0.tgz
cd python3.4/
./configure
make
sudo make install