How can I skip sys.argv[0] when dealing with arguments?

what is the value stored in sys.argv 0 in python
command line arguments in python w3schools
sys.argv string
from sys import argv
python sys.argv length
python check if argument exists
python main function arguments
sys.argv invalid syntax

I have written a little Python script that checks for arguments and prints them if enough arguments or warnings if not enough or no arguments. But by default, the script itself is one of the arguments and I do not want to include it in my code actions.

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("")

I have solved this with:

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

But is there a better/more proper way to ignore the argv[0]?

Start with:

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

Then forget about sys.argv and only use args.

User input and error handling, Because there are no command-line arguments in this case, sys.argv has only one element, namely the program name. The only valid index is then 0. Python sys module provides access to any command-line arguments using the sys.argv method. It serves two purposes. The sys.argv is the list of all the command-line arguments. len(sys.argv) is the total number of length of command-line arguments. Here sys.argv[0] is the program, i.e. script name.

Use argparse to process the command-line arguments.

import argparse


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

print("You gave arguments" + ' '.join(args.args))

How to use sys.argv in Python, Since the iteration starts with 0, it also counts the name of the program as one argument. If one just wants to deal with other inputs they can use (� What is sys.argv? sys.argv is a list in Python, which contains the command-line arguments passed to the script. With the len(sys.argv) function you can count the number of arguments. If you are gonna work with command line arguments, you probably want to use sys.argv. To use sys.argv, you will first have to import the sys […]

You can start from 1 (range(1, len(sys.argv)))

Command Line Arguments in Python, Handling Command Line Arguments with Python. Python 3 supports a a single argument. The first item in the list, sys.argv[0] , is the name of the Python script. sys.argv[] is used to get python command line arguments.sys.argv[0] ‘s value is the file path of the python source code file that is running. For example, if you run python test_sys_arg.pyin a terminal, then sys.argv[0]‘s value is test_sys_arg.py.

sys — System-specific parameters and functions — Python 3.8.5 , Otherwise, trace functions will skip the hook. sys. argv �. The list of command line arguments passed to a Python script. argv[0] is the script name (it is If the current stack frame is not handling an exception, the information is taken from the � The first argument, sys.argv[0], is always the name of the program as it was invoked, and sys.argv[1] is the first argument you pass to the program. It’s common that you slice the list to access the actual command line argument:

How to use sys.argv in Python, import sys print "This is the name of the script: ", sys.argv[0] print "Number of arguments: ", len(sys.argv) print "The arguments are: " , str(sys.argv)� Python provides a getopt module that helps you parse command-line options and arguments. $ python test.py arg1 arg2 arg3 The Python sys module provides access to any command-line arguments via the sys.argv. This serves two purposes − sys.argv is the list of command-line arguments. len(sys.argv) is the number of command-line arguments.

Command line arguments (sys.argv), Don't forget that the counting starts at zero (0) not one (1). How do I use it? To use it, you will first have to import it (import sys). The first argument� Functions that can be used with sys.argv. len()-function is used to count the number of arguments passed to the command line. Since the iteration starts with 0, it also counts the name of the program as one argument. If one just wants to deal with other inputs they can use (len(sys.argv)-1).

Comments
  • You could just change it to for i in range(1, len(sys.argv)) to skip the 0th element.
  • "Why?" -- so programs can change their behavior based on how they're called. It's like how vim, view and vimdiff are all the same command (hardlinks to the same executable), but it has three different behaviors when called under each name. Or how busybox can be hundreds of UNIX commands with only one executable.
  • ...so, yeah, that part of the question is duplicative with Why is argv (argument vector) in C defined as a pointer and what is the need for defining its zeroth as the program name?; I've edited it out so the question is strictly on-topic and non-duplicative.
  • Your solution would skip arguments that happen to be the same as your script name.