Что означает «sys.argv»?

Я изучаю код, и меня смущает одна из его строк, которая:

things = [float(arg) for arg in sys.argv[1:]] Omega_a, Omega_b, Delta_a, Delta_b, \ init_pop_a, init_pop_b, tstep, tfinal = things 

Я искал в Интернете и пытался понять, что означает sys.arg , и вот мое понимание:

  • Требуется целое число? открытый()
  • Python: Какая кодировка используется для обработки sys.argv?
  • Аргументы командной строки в python.
  • Слишком много значений для распаковки
  • from sys import argv - какова функция "script"
  • Python, как разбирать строки, чтобы выглядеть как sys.argv
  • Таким образом, sys.argv[0] – это имя файла, а sys.argv[1:] – остальные параметры, которые должны sys.argv[1:] пользователи. Я не уверен, что я понял это правильно, и если да, то я не понимаю, почему это не похоже:

     Omega_a = input() Omega_b = input() etc... 

    В чем разница между этими двумя способами предоставления параметров?

    Кроме того, если я запустил код (нажмите F5 ), оболочка Python даст мне ошибку, например:

     Traceback (most recent call last): File "C:\Users\testcode.py", line 55, in <module> init_pop_a, init_pop_b, tstep, tfinal = things ValueError: need more than 0 values to unpack 

    Мне даже не дали шанс дать параметры ( sys.argv[1:] ), прежде чем он дал мне ошибку. Поэтому я искал в Интернете. Похоже, мне нужно запустить этот код в cmd, что еще больше смутило меня, почему это нужно и как мне помещать в cmd для его запуска?

  • Запуск сценариев python с подпроцессом в Windows. Обертки проверки кода Python из emacswiki дают ту же ошибку
  • Как вы изменяете ассоциацию файлов для .py Python-файлов в XP?
  • Изменение кодировки Windows cmd вызывает сбой Python
  • Запуск командных строк в вашем скрипте Python
  • Python Script, args не передается скрипту
  • Как запускать команды команд из CMD
  • 4 Solutions collect form web for “Что означает «sys.argv»?”

    Разница в том, что параметры sys.argv (командной строки) задаются до запуска программы (при запуске):

     python testcode.py arg1 arg2 arg3 arg4 and so on ... 

    Это приведет к тому, что ваши переменные будут следующими:

     Omega_a = 'arg1' Omega_b = 'arg2' Delta_a = 'arg3' Delta_b = 'arg4' init_pop_a = 'and' init_pop_b = 'so' tstep = 'on' tfinal = '...' 

    Пока input() s задается при запуске программы.

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

    Все остальные ответы объясняли sys.argv просто прекрасно, но я думаю, что была часть фундаментальной терминологии, которая отсутствовала. Я просто хотел добавить это …

    input() сообщает вашей программе чтение из stdin .

    Это как чтение из файла и поток. Вызов input() читается до тех пор, пока не будет достигнута новая линия. Вы также можете прочитать stdin пока не будет достигнут EOF ( конец файла ).

    sys.argv другой стороны, sys.argv – это просто список, который предоставляется вам из системы, содержащей все аргументы, которые использовались для вызова команды из оболочки. Технически существует некоторый тип ограничения (по системной основе) на максимальное количество аргументов, которые могут быть переданы в командной строке , поэтому существует команда xargs (для вызова вашей команды с партиями ваших аргументов, разделить).

    STDIN

    echo "I am stdin" | myCommand.py

    … Что такое концепция под капотом, как это делается ПОСЛЕ того, как ваша программа работает:

    read_from_stdin = input()

    арг

    myCommand.py "I am an arg"

    И, наконец, чтение из stdin / input() не будет автоматически разбивать ваши слова на список. Существуют дополнительные методы чтения по строке, которые вы можете использовать. Но вы также можете читать по символу, определенное количество символов за раз или весь объем данных одновременно.

    sys.argv называются «параметрами командной строки». Если вы хотите передать их, вы должны запустить сценарий из командной строки. В системе Windows команда будет выглядеть так:

     cmd> python C:\Users\testcode.py arg1 args2 

    где «cmd>» – это подсказка, которую вы получаете после использования «Пуск» -> «Выполнить».

    Параметры не совпадают с параметрами программы. Например, здесь wget используется с параметрами:

     $ wget "I am a parameter!" 

    Вот cat используемая с вводом:

     $ cat Now you type. This is the input. 

    Это и причина вашей ошибки – вы не можете указать параметры как таковые после запуска программы.

    Python - лучший язык программирования в мире.