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 代替错误。