2016-03-23 5 views
-4

если дана команда как:Как получить доступ к параметрам sys.argv Python?

питон 1.py аб 2 34

Как напечатать следующий аргумент в то время как вы в настоящее время сидит на одном раньше. например, если х абы, то я хочу, чтобы напечатать 2:

import sys 
for x in sys.argv[1:]: 
    print next element after x 
+1

использовать 'enumerate' для отслеживания вашего текущего индекса цикла; это должно помочь. – Evert

+3

Выполнение разбора аргументов? Пожалуйста, рассмотрите 'argparse'. Вы сэкономите много здравомыслия. Это дает полезные полезные сообщения, эффективный синтаксический анализ аргументов и довольно прост в использовании. – nneonneo

+0

Если вам нужна дополнительная помощь, вы должны предоставить более подробную информацию о вашем случае использования. Например, одна вещь, которая не ясна, после чтения ab и, следовательно, печати 2, вам нужно прочитать 2 и, следовательно, распечатать 34? Кроме того, если вы сообщите, почему вы хотите это сделать (например, разбор аргументов командной строки для параметров настройки), есть некоторые пакеты, которые уже реализуют то, что вы хотите сделать. – albertoql

ответ

1

Я не уверен, что вы хотите напечатать, но это синтаксический сахар может помочь:

for x in sys.argv[1::2]: 
    print x 

Это печатает любой другой элемент. Так что это будет возвращать ab 34

for x in sys.argv[2::2]: 
    print x 

Это вернет 2

Число после ::, сколько слотов в массиве.

Edit: Чтобы ответить на ваш конкретный вопрос:

val = 1 
for index, x in enumerate(sys.argv[1::2]): 
    val += 1 
    print sys.argv[index+val] 

индекс растет на 1 каждый раз, и Вэл на 1 тоже, то есть каждый цикл мы пропускаем 2 переменные. Следовательно, для чего-то вроде python yourcode.py a 1 b 2 c 3 d 4 вывод будет 1 2 3 4

+0

вы можете сделать свой первый цикл 2 печати? начиная с 1 точно так же, как вы сделали – 33ted

+0

большое спасибо :) – 33ted

Смежные вопросы