ValueError: necesita más de 1 valor para descomprimir python

Tengo un menú existente que te da las opciones L o D L debe cargar el contenido de un archivo y D debe mostrarlo.

 if option == "l" or option == "L": with open("packages.txt") as infp: for line in infp: line = line.rstrip() name,adult,child= line.split(',') if option == "d" or option == "D": print ((name)," - ",(adult)," / ",(child)) 

Sin embargo, cuando bash ejecutar esto obtengo el error:

nombre, adulto, niño = línea.split (‘,’)
ValueError: necesita más de 1 valor para descomprimir

¿Por qué me sale este error?

Esto significa que hay una línea en packages.txt que, al eliminar el espacio en blanco y dividir en comas, no da exactamente tres partes. De hecho, parece que solo da 1 pieza (“se necesita más de 1 valor para descomprimir”), lo que sugiere que hay una línea sin comas en absoluto.

Tal vez hay líneas en blanco o comentarios en packages.txt ?

Es posible que necesite que su código sea más inteligente al analizar el contenido del archivo.

Este error está ocurriendo en

 name,adult,child= line.split(',') 

Cuando asigna tres variables a la izquierda, se supone que tiene una tupla de 3 a la derecha. En este ejemplo, parece que la line no tiene coma, por line.split(',') tanto, line.split(',') da como resultado una lista con una sola cadena, por lo tanto, el error “más de 1 valor para desempaquetar”.

line.split(',') devuelve una tupla. Luego desempaquetar esa tupla escribiendo:

 name,adult,child= line.split(',') 

Si la tupla no tiene exactamente tres elementos, el desempaquetado falla. En su caso, el mensaje de error indica que solo tiene un elemento. Por lo tanto, line.split(',') está devolviendo claramente una tupla con un solo elemento. Y eso significa que la line no tiene comas.

Probablemente esto significa que sus datos de entrada no son lo que espera que sean. Requiere que la line sea ​​una cadena que contenga tres valores separados por comas, pero hay una línea en sus datos de entrada que no cumple con ese requisito.