Pass parameters and flags in Python and configure installers
Published: 2022-12-13 15:44:23

## Passing parameters

To pass parameters to a Python file, simply add the desired parameters after the file name on the command line. For example:

```python
machine@machine~ python my_file.py parameter1 parameter2
```

Within your code file, you can access parameters passed on the command line using the ``ys.argv`` function. This function returns a list with the passed parameters, where the first element of the list (index 0) is always the name of the Python file being executed.

For example, if you have a ``my_file.py`` file with the following code:

```python
import sys

print(sys.argv)
```

and run it in the terminal with the parameters ``parameter1`` and ``parameter2``:


```python
machine@machine~ python my_file.py parameter1 parameter2

```

The printed result will be:

```python
['my_file.py', 'parameter1', 'parameter2']
```

You can then access each of the parameters passed on the command line using the index of the list returned by ``sys.argv``. For example, the first parameter would be ``sys.argv[1]``, the second would be ``sys.argv[2]``, and so on.


## Inserting flags

To insert flags , you can use the following format:

```python
machine@machine~ python file.py --flag1 value1 --flag2 value2
```

Where ``flag1`` and ``flag2`` are the names of the flags you want to pass, and ``value1`` and ``value2`` are the values for those flags. You can pass as many flags as you want, just add more ``--flag value`` to the above command.

To read these flags in your code, you can use the ``argparse`` module:

```python
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--flag1', type=str, default='default_value1')
parser.add_argument('--flag2', type=int, default=0)

args = parser.parse_args()

print(args.flag1)
print(args.flag2)
```

This will create an ``args`` object that contains the values of the flags passed in the command. You can use the ``args.flag1`` and ``args.flag2`` attributes to access the values of flags in your code.

## Configuring installers for our scripts

There are several tools and libraries you can use to create an installer for your script, such as ``setuptools``, ``distutils`` or ``cx_Freeze``.

The simplest way to create an installer for your script is to use ``setuptools``. First, you need to create a file called ``setup.py`` with the following content:

```python
from setuptools import setup

setup(
    name='exif_reader',
    version='1.0',
    scripts=['exif_reader.py']
)
```

Next, you need to create a file called ``MANIFEST.in`` with the following content:

```python
include exif_reader.py
```

This will include your ``exif_reader.py`` script in the installer. Finally, you can build the installer using the following command:

```python
machine@machine~ python setup.py sdist
```

This will create a file called ``exif_reader-1.0.tar.gz`` which is the installer for your script. You can send this file to others and they will be able to install your script using the following command:

```python
machine@machine~ pip install exif_reader-1.0.tar.gz
```

<br />

[![Texto alternativo da imagem](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ds4alkts3uxq0dsco0nv.png))](https://www.linkedin.com/in/israel-lopes-419a32189)