Ошибка Python: “ValueError: нужно больше чем 1 значение для распаковки”

В Python, когда я выполняю этот код:

from sys import argv

script, user_name =argv
prompt = '>'

print "Hi %s, I'm the %s script." % (user_name, script)

Я получаю эту ошибку:

Traceback (most recent call last):  
script, user_name =argv  
ValueError: need more than 1 value to unpack

Что означает та ошибка?

46
задан Eldar Abusalimov 16 December 2015 в 23:57
поделиться

3 ответа

Возможно, вы не указали аргумент в командной строке. В этом случае sys.argv содержит только одно значение, но для предоставления значений для обоих user_name и скрипта должно быть два.

39
ответ дан 26 November 2019 в 20:38
поделиться

Вы не должны делать разыменование кортежей на значениях, которые могут меняться, как в вашей строке ниже.

 script, user_name = argv

Приведенная выше строка завершится неудачно, если вы передадите менее одного аргумента или более одного аргумента. Лучше сделать что-то вроде этого:

 for arg in argv[1:]:
     print arg

Конечно, вы будете делать что-то еще, кроме печати аргументов. Возможно, в цикл 'for' можно поместить серию операторов 'if', которые устанавливают переменные в зависимости от переданных аргументов. Еще лучший способ - использовать пакеты getopt или optparse.

3
ответ дан 26 November 2019 в 20:38
поделиться

Вы не можете запустить этот конкретный фрагмент кода в интерактивном интерпретаторе. Сначала вам нужно сохранить его в файл, чтобы вы могли передать ему аргумент следующим образом

$ python hello.py user338690
4
ответ дан 26 November 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: