Я использую Macbook Pro, работающий под управлением OS X Yosemite 10.10.4, и выполнял упражнения в Learn Python Hard Way. Я бегу это на IPython ноутбуках, и их конфигурации, как показано ниже:«ValueError: слишком много значений для распаковки» в Learn Python Hard Way, Ex 13
Python 2.7.10 |Anaconda 2.2.0 (x86_64)| (default, May 28 2015, 17:04:42) [GCC 4.2.1 (Apple Inc. build 5577)]
На Ex13, указанный на http://learnpythonthehardway.org/book/ex13.html я напечатал и/или скопировать точный код на сайте, но получил сообщение об ошибке.
from sys import argv
script, first, second, third = argv
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
На выполнения кода, сообщение об ошибке я получаю это:
ValueError Traceback (most recent call last) in() ----> 1 script, first, second, third = argv
ValueError: too many values to unpack
Я попытался запустить код построчно, и обнаружил, что проблема в том, когда я задаю больше одно значение для argv. Например, приведенный ниже код выполняется полностью.
from sys import argv
script = argv
print "The script is called:", script
Выход для приведенной выше коды:
The script is called: ['/Users/myusername/anaconda/lib/python2.7/site-packages/IPython/kernel/main.py', '-f', '/Users/myusername/.ipython/profile_default/security/kernel-261810c2-9f04-44d4-95f7-411e0db361ff.json', '--profile-dir', '/Users/myusername/.ipython/profile_default']
Что может быть возможными причинами для этого, и как я мог бы идти о выпрямлении это?
Обновление: Я попытался запустить это через терминал, как было предложено, и это был ответ, который я получил.
Вы должны вызывать это из командной строки, точно так, как они вам говорят. Не используйте ipython для этого упражнения. – NightShadeQueen
В основном проблема заключается в том, что у вас есть 4 параметра, но ваш сценарий ожидает 3. Попробуйте помещать 'print (len (argv))' перед распаковкой кортежа и посмотреть, что из этого получилось. Если это ничего, кроме 4, у вас будут проблемы. Второй фрагмент кода напечатает весь «argv» независимо от количества параметров и, следовательно, не будет проблемой. – shuttle87
Спасибо, но это ограничение ноутбуков ipython, что код будет работать через Terminal, но не при использовании ноутбуков? – user2762934