В 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
Что означает та ошибка?
Возможно, вы не указали аргумент в командной строке. В этом случае sys.argv
содержит только одно значение, но для предоставления значений для обоих user_name
и скрипта
должно быть два.
Вы не должны делать разыменование кортежей на значениях, которые могут меняться, как в вашей строке ниже.
script, user_name = argv
Приведенная выше строка завершится неудачно, если вы передадите менее одного аргумента или более одного аргумента. Лучше сделать что-то вроде этого:
for arg in argv[1:]:
print arg
Конечно, вы будете делать что-то еще, кроме печати аргументов. Возможно, в цикл 'for' можно поместить серию операторов 'if', которые устанавливают переменные в зависимости от переданных аргументов. Еще лучший способ - использовать пакеты getopt или optparse.
Вы не можете запустить этот конкретный фрагмент кода в интерактивном интерпретаторе. Сначала вам нужно сохранить его в файл, чтобы вы могли передать ему аргумент следующим образом
$ python hello.py user338690