另一个python脚本puking ValueError:值太多,无法unp

2024-09-29 17:44:28 发布

您现在位置: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) = line.split()
ValueError: too many values to unpack

下面是它引用的一些代码。 第199行和context(脚本的最后一行):

^{pr2}$

第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中是一个呆子。谢谢!在


Tags: inpytxt脚本mainlinedatfile
3条回答

你的问题最可能的原因是线.分割()调用未产生预期数量的结果子字符串。您要拆分的字符串是错误的字符串(错误的输入?)或者有一个编码错误。。。在

它确切地告诉你问题是什么——“太多的值无法解包”。在

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

在某个地方,你有一行有3个或更多的片段(可能是一个文件名中有空格?),所以你实际上是想

timeInMyrs, moveFileName = ["21.63", "my", "file.dat"]

它崩溃是因为你不能把三个值拟合成两个变量。找到有问题的线路

^{pr2}$

为了解决这个问题,要么(a)避免文件名中有空格,(b)用引号将文件名括起来并使用“csv”模块读取输入文件,要么(c)使用更宽容的行处理,如

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

保证退货不超过两件。在

试试这个

timeInMyrs, moveFileName = line.split()

相关问题 更多 >

    热门问题