python3 split( ) not enough values to unpack(expceted 2, got 1)

在运行一个小脚本时,脚本从一文本文件读取数据,事实上这个文件只有一行‘count:2‘,并取到这个2,将其转成数字。但运行,总是报错。

代码如下:

1 with open(‘count.txt‘, ‘r‘) as file:
2     if not file.readline():
3         pass
4     else:
5         name, count = file.readline().split(‘:‘)
6         count = int(count)

code

错误信息如下:

‘‘‘
Traceback (most recent call last):
File "C:\Users\Andy\Desktop\split_error.py", line 6, in <module>
count = int(count)
#ValueError: invalid literal for int() with base 10: ‘‘

‘‘‘

由此可以看出count为空。但是明显有内容,怎么会是空呢?于是注释到count = int(count)这行,再次运行,又出错了

错误信息如下:

‘‘‘

Traceback (most recent call last):
File "C:\Users\Andy\Desktop\split_error.py", line 5, in <module>
name, count = file.readline().split(‘:‘)
ValueError: not enough values to unpack (expected 2, got 1)

‘‘‘

说是没有给足够的值来解包,应该有两个,只给了一个。这就奇怪了,还是不明白原因。

于是shell里面试了下,终于找到原因:

当打开文件时,比如对一个文件执行了:readlines() 或者 readline() 那么文件的当前位置偏移就会改变,readlines()是偏移到文件结尾,而readlin()偏移到下一行.

(本脚本是因为执行if时,已经执行了readlines(),不成立,又执行else中的readlin())

所以,当这里第二次调用readlines()或者readlin()时,

已经到了文件结尾,读取到的内容为空,所以对空内容取split(‘:‘)方法时,当然报错。

因此,这里的最好的解决方法就是在第一次读之前将文件偏移回文件头

方法如下:file.seek(0)

再次读取,一切正常!

时间: 2024-11-13 14:05:39

python3 split( ) not enough values to unpack(expceted 2, got 1)的相关文章

libsvm easy.py ValueError: need more than 0 values to unpack windows下终极解决

现象是: python easy.py train test 输出: Scaling training data...WARNING: original #nonzeros 100389 new #nonzeros 9983948Use -l 0 if many original feature values are zerosCross validation...Traceback (most recent call last): File "easy.py", line 61, i

Celery ValueError: not enough values to unpack (expected 3, got 0)的解决方案

最近因项目需要,在使用任务队列Celery的时候,出现如题错误,最终在github上里找到解决办法,记录一下. 运行环境环境:win10 + python3 + redis 2.10.6 + celery 4.2.1 win10上运行celery4.x会出现这个问题,开启任务队列一切正常(显示ready提示),一旦接受任务,就报ValueError: not enough values to unpack (expected 3, got 0)错误,解决办法如下: 1.先安装一个扩展 event

Python: ValueError: too many values to unpack

eg1: >>>a,b=(1,2,3) Traceback (most recent call last): File "<stdin>",line 1,in <module> ValueError: too many values to unpack (expected 2) 错误原因: 一个tuple值赋给一个tuple变量时,变量个数不够造成的 可以改成 a,b,c=(1,2,3)或者其他变量即可 eg2: >>>imp

ValueError: too many values to unpack

Error msg: 执行: python manage,py makemigrations 报错:Value: too many values to unpack 问题: django第一次数据库迁移之后, apps中的model位置改变了, 导致之前生成的迁移文件检测不到原来的位置 解决: 删除所有的迁移文件重新迁移, 或者将之前的迁移文件的路径修改正确 原文地址:https://www.cnblogs.com/hpcm/p/9998037.html

celery 启用worker ValueError: not enough values to unpack

[2018-01-12 19:08:15,545: INFO/MainProcess] Received task: tasks.add[5d387722-5389-441b-9b01-a619b93b4702][2018-01-12 19:08:15,550: ERROR/MainProcess] Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)',)Traceback

Python3基础 使用keys() values()和for循环打印一个字典中的所有键和值

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: dict1={'子':'鼠','丑':'牛','寅':'虎','卯':'兔','辰':'龙','巳':'蛇','午':'马','未':'羊','申':'猴','酉':'鸡','戌':'狗','亥':'猪'} #你会发现顺序变了 for eachKey in dict1.keys

Python3基础 dict keys+values 循环打印字典中的所有键和值

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ @Author : 行初心 @Date : 18-9-23 @Blog : www.cnblogs.com/xingchuxin @GitHub : github.com/GratefulHeartCoder """ de

rror: too many values to unpack

方法返回值 原文地址:https://www.cnblogs.com/UUUz/p/10279219.html

python调用cv2.findContours时报错:ValueError: not enough values to unpack (expected 3, got 2)

OpenCV旧版,返回三个参数: im2, contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 要想返回三个参数: 把OpenCV 降级成3.4.3.18 就可以了,在终端输入pip install opencv-python==3.4.3.18 OpenCV 新版调用,返回两个参数: contours, hierarchy = cv2.findContours(mask, cv