Что означает «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 , и вот мое понимание:

Таким образом, 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 для его запуска?

  • Проблема с sys.argv , когда модуль unittest находится в скрипте
  • Использование метода sys.stdout.flush ()
  • Установите LD_LIBRARY_PATH перед импортом в python
  • Постоянно добавлять каталог в PYTHONPATH
  • Python: Какая кодировка используется для обработки sys.argv?
  • В чем разница между стеком и фреймом?
  • Почему sys.getdefaultencoding () отличается от sys.stdout.encoding и как это прерывает строки Unicode?
  • Что читает sys.stdin?
  • 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 - лучший язык программирования в мире.