## 1 Concepts 

Let’s show the sort of functionality that we are going to explore in this introductory tutorial by making use of the ls command: 

$ ls cpython devguide prog.py pypy rm-unused-function.patch $ ls pypy ctypes_configure demo dotviewer include lib_pypy lib-python ... $ ls -l total 20 drwxr-xr-x 19 wena wena 4096 Feb 18 18:51 cpython drwxr-xr-x 4 wena wena 4096 Feb 8 12:04 devguide -rwxr-xr-x 1 wena wena 535 Feb 19 00:05 prog.py drwxr-xr-x 14 wena wena 4096 Feb 7 00:59 pypy -rw-r--r-- 1 wena wena 741 Feb 18 01:01 rm-unused-function.patch $ ls --help Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. ... 

A few concepts we can learn from the four commands: 

• The$_{ls}$command is useful when run without any options at all. It defaults to displaying the contents of the current directory. 

• If we want beyond what it provides by default, we tell it a bit more. In this case, we want it to display a different directory,$_{pypy}$. What we did is specify what is known as a positional argument. It’s named so because the program should know what to do with the value, solely based on where it appears on the command line. This concept is more relevant to a command like$_{cp}$, whose most basic usage is$_{cp SRC DEST}$. The first position is what you want copied, and the second position is where you want it copied to . 

• Now, say we want to change behaviour of the program. In our example, we display more info for each file instead of just showing the file names. The$_{-l}$ in that case is known as an optional argument. 

• That’s a snippet of the help text. It’s very useful in that you can come across a program you have never used before, and can figure out how it works simply by reading its help text. 

## 2 The basics 

Let us start with a very simple example which does (almost) nothing: 

import argparse parser =argparse.ArgumentParser() parser.parse_args() 

Following is a result of running the code: 

$ python3 prog.py $ python3 prog.py --help usage: prog.py [-h] optional arguments: -h, --help show this help message and exit $ python3 prog.py --verbose usage: prog.py [-h] prog.py: error: unrecognized arguments: --verbose $ python3 prog.py foo 

(continues on next page) 

