另一个python脚本puking ValueError:太多的值无法解包

另一个python脚本puking ValueError:太多的值无法解包,python,Python,我正在使用python,而.py脚本正在呕吐。以下是我的输出: reading file 'ConstantVel_Grid1.txt'... Traceback (most recent call last): File "velocity.py", line 199, in <module> main(sys.argv) File "velocity.py", line 79, in main (timeInMyrs, moveFileName) = li

我正在使用python,而.py脚本正在呕吐。以下是我的输出:

reading file 'ConstantVel_Grid1.txt'...
Traceback (most recent call last):
  File "velocity.py", line 199, in <module>
    main(sys.argv)
  File "velocity.py", line 79, in main
    (timeInMyrs, moveFileName) = line.split()
ValueError: too many values to unpack
第79行和上下文:

allFiles = []

    while True:
        line = inputFile.readline().strip()
        if not line: # no more input left in file
            break

        (timeInMyrs, moveFileName) = line.split()
        allFiles.append((float(timeInMyrs), moveFileName))

    inputFile.close()
下面是它正在读取的.txt文件的一个示例,大约有40行:

23.0 Grid1_Step0.dat
22.42 Grid1_Step1a.dat
21.84 Grid1_Step1b.dat
21.63 Grid1_Step1c.dat
20.68 Grid1_Step1d.dat
.dat文件也是以空格分隔的


有什么建议吗?回答这个ValueError的许多其他问题对此没有多大意义,因为我已经是python的第二个新手了。谢谢

它准确地告诉您问题所在——“太多的值无法解包”

当您使用.split()字符串时,它会在空白处拆分并返回项目列表

在某个地方,您有一行包含3个或更多部分(可能是一个文件名,其中有空格?),因此您实际上是在尝试

timeInMyrs, moveFileName = ["21.63", "my", "file.dat"]
它崩溃了,因为你不能将三个值放入两个变量中。要找到有问题的路线

try:
    timeInMyrs, moveFileName = line.split()
except ValueError:
    print("Couldn't parse line '{}'".format(line.rstrip()))
为了解决这个问题,要么(a)避免文件名中带有空格,(b)用引号括起文件名并使用“csv”模块读取输入文件,要么(c)使用更宽容的行处理,如

timeInMyrs, moveFileName = line.rstrip().split(None, 1)

保证返回的结果不会超过两个。

问题最可能的原因是line.split()调用没有产生预期数量的结果子字符串。您正在拆分的字符串可能是错误的字符串(输入错误?),或者存在编码错误…

请尝试此操作

timeInMyrs, moveFileName = line.split()

你试过调试它吗?在分配行之前添加一个简单的
print line.split()
,查看它打印的内容。这可能不仅有助于提供错误消息,而且有助于提供底层代码,是的,我们不必在这里通灵。回溯清楚地表明问题出在velocity.py的第79行,因此了解这段代码的样子会很有帮助(尽管您已经得到了提示)。谢谢大家!底层代码有一百万英里长。不过,其中一个解决方案似乎有所帮助。谢谢,行处理的调整成功了!
timeInMyrs, moveFileName = line.split()