我使用json和python与服务器通信,我想用argparse定义数据的类型。有办法支持Int、Float和String吗?我知道默认情况下argparse参数是字符串。
在下面的代码段中,我想发送一个jsonArray,它可以发送不同的数据类型(目前只有int(。
parser.add_argument("-v", "--value", nargs="+", default=[0], type=int, help="Values that will be written (Only Write and WriteComplete)")
我有一个数据类型参数。这是服务器处理我的请求后用于通信的设备所需要的。
parser.add_argument("-dt", "--data-type", help="Data type of the sub indices (i.e. "uint32")")
所以我想用这个参数来定义它是float、int还是字符串。
事实证明,您无法将两个参数连接在一起。我的解决方案是创建一个函数来比较我想要交互的两个参数。
def convertValue(value, dataType):
intTypes = ["int8", "int16", "int32", "int64", "uint8", "uint16", "uint32", "uint64"]
if dataType in intTypes:
return int(value, 0)
floatTypes = ["float", "double"]
if dataType in floatTypes:
return float(value)
return value
当生成JSON请求时,我调用上面的函数。
"data": {
"values": [convertValue(v, dataType) for v in value],
"type": dataType,
}