Как я могу пропустить sys.argv [0] при работе с аргументами? - PullRequest
0 голосов
/ 13 апреля 2019

Я написал небольшой скрипт на Python, который проверяет аргументы и печатает их, если достаточно аргументов или предупреждений, если их недостаточно или нет аргументов. Но по умолчанию сам скрипт является одним из аргументов, и я не хочу включать его в мои действия кода.

import sys

# print warning if no arguments.
if len(sys.argv) < 2: 
  print("\nYou didn't give arguments!")
  sys.exit(0)

# print warning if not enough arguments.
if len(sys.argv) < 3: 
  print("\nNot enough arguments!")
  sys.exit(0)

print("\nYou gave arguments:", end=" ")
# print arguments without script's name
for i in range(0, len(sys.argv)):
  if sys.argv[i] == sys.argv[0]: # skip sys.argv[0]
    continue
  print(sys.argv[i], end=" ") # print arguments next to each other.

print("")

Я решил это с помощью:

if sys.argv[i] == sys.argv[0]: # skip sys.argv[0]
    continue

Но есть ли лучший / более правильный способ игнорировать argv [0]?

Ответы [ 3 ]

4 голосов
/ 13 апреля 2019

Начните с:

args = sys.argv[1:]   # take everything from index 1 onwards

Затем забудьте о sys.argv и используйте только args.

1 голос
/ 13 апреля 2019

Используйте argparse для обработки аргументов командной строки.

import argparse


p = argparse.ArgumentParser()
p.add_argument("args", nargs='+')
args = p.parse_args()

print("You gave arguments" + ' '.join(args.args))
0 голосов
/ 13 апреля 2019

Вы можете начать с 1 (диапазон (1, len (sys.argv)))

...