Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在decimal.invalidooperation中将字符串转换为十进制结果_Python_Python 3.x_Decimal - Fatal编程技术网

Python 在decimal.invalidooperation中将字符串转换为十进制结果

Python 在decimal.invalidooperation中将字符串转换为十进制结果,python,python-3.x,decimal,Python,Python 3.x,Decimal,我从外部设备(串行)接收一些输入,并尝试将值解析为小数。但是仅在我的docker中的覆盆子pi上我有时会收到以下错误: 文件“/usr/bin/asmp/worker/parser.py”,第58行,在parse_line_值中 返回小数(值\节点) decimal.invalidooperation:[] 以下函数(第一个返回语句)中出现异常: 导致崩溃的输入如下 key = return_total_normal value = 000000.000*kWh 正如您所见,在将字符串转换为十

我从外部设备(串行)接收一些输入,并尝试将值解析为小数。但是在我的docker中的覆盆子pi上我有时会收到以下错误:

文件“/usr/bin/asmp/worker/parser.py”,第58行,在parse_line_值中

返回小数(值\节点)

decimal.invalidooperation:[]

以下函数(第一个返回语句)中出现异常:

导致崩溃的输入如下

key = return_total_normal
value = 000000.000*kWh
正如您所见,在将字符串转换为十进制之前,我在函数中放入了一条print语句,崩溃前的最后几行是:

Parsing value (usage_total_low):'000333.744'
Parsing value (return_total_low):'000000.000'
Parsing value (return_total_normal):'000000.000'
因此,正如您所看到的,return\u total\u low的值与return\u total\u normal的值完全相同,但效果很好。这种情况有时也会发生,所以在其他情况下,我没有错误,它连续工作10天。(每10秒分析一次该值)


有什么线索可以让我走上正轨吗?

您的调试不正确。当输入您列出的输入时,代码工作正常。如果需要,您甚至可以在Python的REPL中轻松地确认这一点。因此,有时转换的值不是您期望的值,而是无法解析的值(例如,尝试“00000q000*kWh”)。换句话说,您的日志文件似乎不可信,它显然不知何故丢失了令人不快的值。当程序崩溃时,它是否没有正确刷新?@IrmendeJong:我明白你的意思,但你的目的是什么?我现在只使用一个print语句将其打印回控制台。当我用一个无效值(例如,您输入的0000q000*kwh)尝试它时,我仍然会在它崩溃之前打印该值。将print语句更改为
print(“解析值(“+key+”)”):+repr(值_节点))可能很有用
,因为这样可以方便地取消任何通常不可见的空白字符的转义。我并不认为这是问题的具体原因,但消除这种可能性并没有坏处。如果您这样做,请告诉我们,它会显示一些不寻常的内容。@Kevin:您是一个英雄:它现在显示000000\x00.000,还不知道该字符的含义和方式我得到它“\x00”,也表示为“\0”,是一个。有时它表示数据流的结束。但我不知道在这个特定上下文中它可能意味着什么。
Parsing value (usage_total_low):'000333.744'
Parsing value (return_total_low):'000000.000'
Parsing value (return_total_normal):'000000.000'