Python: ValueError: invalid literal for int() with base 10: ' '
Python: ValueError: invalid literal for int() with base 10: ' '
我在我的 vi 编辑器 运行ning python v2.6 中收到此错误 ValueError,我无法更新它。经过大量研究和测试后,我无法弄清楚。反正有没有用这个当前代码分配一个基值 10?有什么改变和重组的建议吗?如果有人 运行 遇到过类似的问题并且有解决办法,我很想知道以供将来参考。
这是我的代码:
numcpu = sub.Popen("($(cat /proc/cpuinfo | grep 'physical id' | awk '{print $NF}' | sort | uniq | wc -l))", shell=True, stdout=sub.PIPE, stderr=sub.PIPE)
numcores = sub.Popen("($(cat /proc/cpuinfo | grep 'cpu cores' | awk '{print $NF}' | sort | uniq | wc -l))", shell=True, stdout=sub.PIPE, stderr=sub.PIPE)
numsibling = sub.Popen("($(cat /proc/cpuinfo | grep 'siblings' | awk '{print $NF}' | sort | uniq | wc -l))", shell=True, stdout=sub.PIPE, stderr=sub.PIPE)
numthreads = int(numsibling.stdout.readline())/int(numcores.stdout.readline())
if numsibling == 0 :
maxcpuload = int(numcpu) * int(numcores)
else:
maxcpuload = ((int(numcpu) * int(numcores)+ int(numsibling))/2 )
我的错误:
Traceback (most recent call last):
File "./cputool", line 46, in <module>
cputool()
File "./cputool", line 31, in cputool
numthreads = int(numsibling.stdout.readline())/int(numcores.stdout.readline())
ValueError: invalid literal for int() with base 10: ''
其中一个字符串 numsibling.stdout.readline()
或 numcores.stdout.readline()
为空。所以当你试图用函数 int
解析它的整数值时,它 returns 一个错误。
可能您可以在传递空字符串时使用默认值,例如:
int(numsibling.stdout.readline() or '0')
这样即使变量为空,你也会有 0
代替错误。
我在我的 vi 编辑器 运行ning python v2.6 中收到此错误 ValueError,我无法更新它。经过大量研究和测试后,我无法弄清楚。反正有没有用这个当前代码分配一个基值 10?有什么改变和重组的建议吗?如果有人 运行 遇到过类似的问题并且有解决办法,我很想知道以供将来参考。
这是我的代码:
numcpu = sub.Popen("($(cat /proc/cpuinfo | grep 'physical id' | awk '{print $NF}' | sort | uniq | wc -l))", shell=True, stdout=sub.PIPE, stderr=sub.PIPE)
numcores = sub.Popen("($(cat /proc/cpuinfo | grep 'cpu cores' | awk '{print $NF}' | sort | uniq | wc -l))", shell=True, stdout=sub.PIPE, stderr=sub.PIPE)
numsibling = sub.Popen("($(cat /proc/cpuinfo | grep 'siblings' | awk '{print $NF}' | sort | uniq | wc -l))", shell=True, stdout=sub.PIPE, stderr=sub.PIPE)
numthreads = int(numsibling.stdout.readline())/int(numcores.stdout.readline())
if numsibling == 0 :
maxcpuload = int(numcpu) * int(numcores)
else:
maxcpuload = ((int(numcpu) * int(numcores)+ int(numsibling))/2 )
我的错误:
Traceback (most recent call last):
File "./cputool", line 46, in <module>
cputool()
File "./cputool", line 31, in cputool
numthreads = int(numsibling.stdout.readline())/int(numcores.stdout.readline())
ValueError: invalid literal for int() with base 10: ''
其中一个字符串 numsibling.stdout.readline()
或 numcores.stdout.readline()
为空。所以当你试图用函数 int
解析它的整数值时,它 returns 一个错误。
可能您可以在传递空字符串时使用默认值,例如:
int(numsibling.stdout.readline() or '0')
这样即使变量为空,你也会有 0
代替错误。