Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 工作程序开始抛出行拆分的错误代码_Python_Python 2.7 - Fatal编程技术网

Python 工作程序开始抛出行拆分的错误代码

Python 工作程序开始抛出行拆分的错误代码,python,python-2.7,Python,Python 2.7,我正在为我的妻子编写一个超级简单的代码,以便能够跟踪我们的家庭餐具室库存。我让它工作得很好(从文本文件中提取项目并将项目写入其中),但随后我开始出现这个奇怪的错误 Traceback (most recent call last): File "C:/Users/USFBS/Desktop/Pantry_Inventory", line 24, in <module> (val, key) = line.split() ValueError: need more than

我正在为我的妻子编写一个超级简单的代码,以便能够跟踪我们的家庭餐具室库存。我让它工作得很好(从文本文件中提取项目并将项目写入其中),但随后我开始出现这个奇怪的错误

Traceback (most recent call last):
  File "C:/Users/USFBS/Desktop/Pantry_Inventory", line 24, in <module>
    (val, key) = line.split()
ValueError: need more than 0 values to unpack

任何有助于澄清这一问题或至少有助于我理解为什么会发生这种情况的想法或建议都将是非常棒的(注意:我在代码中用粗体的双星号括起来,用于抛出错误以供参考)。

我怀疑您正在阅读的文件(pantry.txt)中有空行当for循环到达这一空行时,循环变量“line”被赋值为空字符串

>>> ''.split()
[]
>>> a,b = ''.split()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 0 values to unpack
>''.split()
[]
>>>a,b=''.split()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:需要0个以上的值才能解包

您至少可以在两个不同的场合打开餐具室文件来解决此问题。一个用于阅读,一个用于写作。通过这样做,您可以确保文件被覆盖而不是附加到

阅读

问题是,您正在回写到从中读取的同一个文件实例中,并且文件被附加到了结果中,您手动添加的换行符在文件中创建了空行。您的代码无法处理此问题,因为元组解包要求每行拆分中有2个值

(val, key) = line.split(" ")

你能举一个你的餐具室档案的例子吗。看起来您试图拆分一个空行。我想知道pantry文件是否被覆盖,以前还可以,但之后有错误或丢失的数据。pantry文件只是一行,其中有“5意大利面”。它很小,但出于测试目的,它确实起到了作用(为了测试,我也添加了更多的行,但仍然可以弥补错误)。您的食品储藏室中的空行?我的食品储藏室中的空行。在帖子上评论的帮助下,我能够确定我实际上已经在
pantry.txt
文件中添加了空行。现在一切都搞定了。谢谢你的意见,非常感谢。
with open("pantry.txt","r") as f:
    for line in f:
        (val, key) = line.split(" ")
        pantry[key] = int(val)
with open("pantry.txt","w") as f:
    for k, v in pantry.iteritems():
        f.write('%d %s' % (v, k))
(val, key) = line.split(" ")