В настоящее время я изучаю Python и хотел узнать (в связи с моим примером ниже), что представляет собой sys.argv[1]
в упрощенном виде. Это просто запрос на ввод?
#!/usr/bin/python3.1
# import modules used here -- sys is a very standard one
import sys
# Gather our code in a main() function
def main():
print ('Hello there', sys.argv[1])
# Command line args are in sys.argv[1], sys.argv[2] ..
# sys.argv[0] is the script name itself and can be ignored
# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
main()
Хотелось бы отметить, что предыдущие ответы сделали множество предположений о пользователе'ы знания. Этот ответ пытается ответить на вопрос в более учебник уровень.
Для каждого вызова питона, `sys файла.агду автоматически список строк, представляющих собой аргументы (как разделенных пробелами) в командной строке. Название происходит от c программирования конвенции, в котором argv и АГДС представлять аргументы командной строки.
Вы'll хочу узнать больше о списки и строки, как вы'повторного ознакомления с Python, но в то же время, вот несколько вещей, чтобы знать.
Можно просто создать скрипт, который печатает аргументы, как они're представлена. Он также выводит количество аргументов, используя функцию лен
в списке.
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
Скрипт требуется Python 2.6 или более поздней версии. Если вы называете print_args.py этот скрипт`, вы можете вызывать его с разными аргументами, чтобы посмотреть, что происходит.
> python print_args.py
['print_args.py'] 1
> python print_args.py foo and bar
['print_args.py', 'foo', 'and', 'bar'] 4
> python print_args.py "foo and bar"
['print_args.py', 'foo and bar'] 2
> python print_args.py "foo and bar" and baz
['print_args.py', 'foo and bar', 'and', 'baz'] 4
Как видите, аргументов в командной строке указать имя скрипта, но не имя переводчика. В этом смысле, Python рассматривает сценарий as исполняемый файл. Если вам нужно знать имя исполняемого файла (Python, в данном случае), вы можете использовать представление sys.исполняемые.
Вы можете видеть из примеров, которые можно получить аргументы, содержащие пробелы, если пользователь вызывается скрипт с аргументами в кавычках, так что вы получаете список аргументов, предоставленных Пользователем.
Теперь в коде Python, вы можете использовать этот список строк в качестве входных данных для вашей программы. Поскольку списки индексируются от нуля чисел, вы можете получить отдельные предметы, используя список[0] синтаксис. Например, чтобы получить имя скрипта:
script_name = sys.argv[0] # this will always work.
Хотя интересно, вам не всегда нужно знать ваше имя скрипта. Чтобы получить первый аргумент после имени сценария, вы можете сделать следующее:
filename = sys.argv[1]
Это очень распространенная использования, но учтите, что она не будет выполнена с IndexError, если не аргумент.
Кроме того, питон позволяет ссылаться ломтик список, так чтобы вам list_ _another только передаваемых аргументов (но без имени скрипта), вы можете сделать
user_args = sys.argv[1:] # get everything after the script name
Кроме того, в Python позволяет назначить последовательность элементов (включая списки) в именах переменных. Так что если вы ожидаете, что пользователь всегда поставить два аргумента, вы можете назначить эти аргументы (как строки) для двух переменных:
user_args = sys.argv[1:]
fun, games = user_args # len(user_args) had better be 2
Поэтому, отвечая на ваш конкретный вопрос, сис.аргумент argv[1]
представляет собой первый аргумент командной строки (как String
) прилагается к скрипту. Он не будет запрашивать ввод, но он не справится с IndexError если аргументы передаются в командной строке после имени скрипта.
sys.argv[1] содержит первую командную строку аргумент, переданный вашему скрипту.
Например, если ваш скрипт называется hello.py
и вы выдаете:
$ python3.1 hello.py foo
или:
$ chmod +x hello.py # make script executable
$ ./hello.py foo
Ваш скрипт выведет:
Hello there foo
`Сыс.агду-это список.
Этот список создается командная строка, это'ы список аргументов командной строки.
Например:
в командной строке вы введите что-то вроде этого,
python3.2 file.py something
`Сыс.агду станет список ['файл.пы', 'что-то']
В этом случае sys файла.аргумент argv[1] = 'что-то'
Просто добавлю к ответу Фредерика, например, если вы вызовете свой скрипт следующим образом:
./myscript.py foo bar
sys.argv[0]
будет "./myscript.py"
sys.argv[1]
будет "foo" и
sys.argv[2]
будет "bar" ... и так далее.
В вашем примере, если вы вызовете скрипт следующим образом ./myscript.py foo
, то скрипт'выведет "Hello there foo".
Добавив еще несколько очков, чтобы Джейсон'ы ответа :
Для всех пользователей предоставляется аргументы : user_args = Сыс.аргумент argv[1:]
Рассмотреть представление sys.argv как список строк, как (упоминается Джейсон). Поэтому все манипуляции список будет применяться здесь. Это называется "нарезки список и". Для получения дополнительной информации посетите здесь.
Синтаксис такой : список[начало:конец:шаг]. Если пропустить начало, то по умолчанию будет 0, а если опустить конец, он будет по умолчанию длину списка.
Предположим, вы хотите только брать все аргументы после 3-й аргумент, то :
user_args = sys.argv[3:]
Предположим, вы хотите получить только первые два аргумента, то :
user_args = sys.argv[0:2] or user_args = sys.argv[:2]
Предположим, вы хотите аргументов от 2 до 4 :
user_args = sys.argv[2:4]
Предположим, вы хотите последний аргумент (последний аргумент-это всегда -1, Так что здесь происходит, мы начинаем считать от задней. Так начала в прошлом, без конца, без шага) :
user_args = sys.argv[-1]
Предположим, вы хотите второй последний аргумент :
user_args = sys.argv[-2]
Предположим, вы хотите последние два аргумента :
user_args = sys.argv[-2:]
Предположим, вы хотите последние два аргумента. Вот, старт -2, то есть предпоследний пункт, а затем до конца (обозначается как ":" был) :
user_args = sys.argv[-2:]
Предположим, вы хотите, чтобы все, кроме последних двух аргументов. Вот, начала 0 (по умолчанию), а конец Второй последний пункт :
user_args = sys.argv[:-2]
Предположим, вы хотите аргументы в обратном порядке :
user_args = sys.argv[::-1]
Надеюсь, что это помогает.
sys.argv - это список, содержащий путь к скрипту и аргументы командной строки; т.е. sys.argv[0] - это путь к скрипту, который вы запускаете, а все последующие члены - это аргументы.
Чтобы передать аргументы в скрипт на Python при запуске скрипта через командную строку
питона create_thumbnail.py test1.jpg test2.jpg
здесь имя скрипта - create_thumbnail.py, аргумент 1 - test1.jpg, аргумент 2 - test2.jpg
В сценарий create_thumbnail.py я использую
sys.argv[1:]
который даст мне список аргументов я сдал в командной строке ['условие_1.форматы jpg', 'условие_2.форматы jpg']
Сыс.агду-это атрибут модуля индикатор
sys. Он говорит, что аргументы, переданные в файл в командной строке
каталога sys..аргумент argv[0]бросается в каталог, где находится файл.
в sys.аргумент argv[1]` возвращает первый аргумент в командной строке. Думаю, как у нас есть файл example.py .
import sys # Importing the main sys module to catch the arguments
print(sys.argv[1]) # Printing the first argument
Теперь вот в командной строке, когда мы делаем это:
python example.py
Он будет бросать ошибка индекса в строке 2. Ведь нет никакого аргумента не прошло. Вы можете увидеть длину аргументы, переданные пользователем, используя если LEN(sys файла.агду) >= 1: # Код
.
Если мы запустим example.py с передачей аргумента
python example.py args
Он печатает:
args
Потому что это был первый аргумент! Позвольте'ы сказать, мы сделали его исполняемый файл с помощью PyInstaller. Мы бы сделать это:
example argumentpassed
Он печатает:
argumentpassed
Это'ы очень полезно, когда вы делаете команду в терминале. Сначала проверьте длину аргументы. Если нет аргументов, сделать текст справки.
Сыс .агду появится команда аргументы строка, переданная при запуске скрипта или вы можете сказать, что представление sys.агду будет хранить параметры командной строки передаваемые в Python при запуске из терминала.
Просто попробуйте это:
import sys
print sys.argv
агду магазинах все аргументы, переданные в списке Python. Выше будет печатать все аргументы, переданные будет запущен скрипт.
Теперь попробуйте это работает ваш filename.py как это:
python filename.py example example1
это будет печатать 3 аргумента в списке.
sys.argv[0] #is the first argument passed, which is basically the filename.
Аналогично, из argv1 является первым переданным аргументом, в данном случае 'примеру'
Подобный вопрос был задан уже здесь Кстати. Надеюсь, что это помогает!