Как запустить скрипт argv с терминала Mac OSX - PullRequest
1 голос
/ 04 декабря 2011

У меня был быстрый вопрос по поводу запуска скрипта на Python.У меня есть следующий код, введенный в файл, сохраненный как «ex13.py»:


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

Когда я пытаюсь просто «запустить» его из выпадающего меню в IDLE, он даетмне эта ошибка:


Traceback (most recent call last):
  File "/Users/brianerke 2/Desktop/ex13.py", line 3, in <module>
    script, first, second, third = argv
ValueError: need more than 1 value to unpack

Что мне нужно ввести в интерпретатор / терминал, чтобы запустить этот скрипт?Большое спасибо!

Брайан

Ответы [ 3 ]

1 голос
/ 04 декабря 2011

Чтобы этот скрипт работал, вам нужно указать 3 позиционных параметра в командной строке.

python /Users/brianerke 2/Desktop/ex13.py option1 option2 option3

Чтобы избежать ошибки, вы можете проверить длину argv:

if len(sys.argv) < 3:
    print "You must supply three arguements"
    sys.exit(1)
1 голос
/ 04 декабря 2011

К сожалению, нет простого способа напрямую указать аргументы при запуске скрипта Python из версии IDLE для OS X.Как отмечают другие, самое простое решение - отредактировать в IDLE, сохранить сценарий, а затем запустить скрипт напрямую из окна сеанса терминала, используя Terminal.app с помощью команды python.

Другой подход будетдобавить некоторый код скаффолдинга, чтобы позволить вам моделировать передачу аргументов командной строки.Простой (и не самый лучший) пример:

from sys import argv

def main(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

if __name__ == '__main__':
    if len(argv) < 4:
        argv = ['script', '1', '2', '3']
    main(argv)
1 голос
/ 04 декабря 2011

Если вы хотите запустить с терминала, вы должны написать

python Desktop/ex13.py 1 2 3

, если вы находитесь в своей домашней папке и хотите передать аргументы 1, 2 и 3.

Однако ваш выводстрока кажется недействительной, разделяя отпечатки на отдельные строки

print "The script is called:", script 
print "Your first variable is:", first 
print "Your second variable is:", second 
print "Your third variable is:", third

Я получаю

python work/t.py 1 2 3
The script is called: work/t.py
Your first variable is: 1
Your second variable is: 2
Your third variable is: 3
...