Ответ 1
Вероятно, вы не указали аргумент в командной строке. В этом случае sys.argv
содержит только одно значение, но для предоставления значений для user_name
и script
должно быть два, чтобы
В 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
должно быть два, чтобы
youre get '' ValueError: требуется больше, чем 1 значение для распаковки '', потому что вы дали только одно значение, script (в данном случае это ex14.py)
проблема заключается в том, что вы забыли добавить имя после запуска файла .py.
строка 3 вашего кода
script, user_name = argv
script - ex14.py, вы забыли добавить имя после
поэтому, если ваше имя было майхалом, так что вы входите в терминал, должно выглядеть примерно так:
> python ex14.py michael
сделайте это изменение, и код работает отлично
Вы не можете запустить этот фрагмент кода в интерактивном интерпретаторе. Сначала вам нужно сохранить его в файл, чтобы вы могли передать ему аргумент следующим образом
$ python hello.py user338690
Вы не должны выполнять разыменование шрифта по значениям, которые могут измениться, как ваша строка ниже.
script, user_name = argv
Строка выше не будет выполнена, если вы передадите менее одного аргумента или более одного аргумента. Лучший способ сделать это - сделать что-то вроде этого:
for arg in argv[1:]:
print arg
Из-за этого вы будете делать что-то другое, кроме как распечатать args. Может быть, поместить в операторский цикл цикл "if", который задает переменные в зависимости от переданных аргументов. Еще лучший способ - использовать пакеты getopt или optparse.
Вам нужно передать аргументы в терминале, чтобы сохранить их в 'argv'. Эта переменная содержит аргументы, которые вы передаете на свой Python script при запуске. Затем он распаковывает аргументы и сохраняет их в разных переменных, указанных в программе, например.
script, first, second = argv
print "Your file is:", script
print "Your first entry is:", first
print "Your second entry is:" second
Затем в командной строке вы должны запустить свой код следующим образом:
$python ex14.py Hamburger Pizza
Ваш вывод будет выглядеть следующим образом:
Your file is: ex14.py
Your first entry is: Hamburger
Your second entry is: Pizza
Вы должны запустить свой код следующим образом, чтобы получить свой вывод,
python file_name.py user_name
Я предполагаю, что вы нашли этот код на Упражнение 14: Приглашение и переход.
Выполните следующие действия:
script = '*some arguments*'
user_name = '*some arguments*'
и отлично работает
Эта ошибка связана с тем, что
argv #, которая является переменной аргумента, которая удерживает переменные, которые вы передаете, с вызовом script.
теперь вместо этого
Python abc.py
делать
python abc.py yourname {передайте переменную, которую вы создали для хранения argv}