56 lines
1.8 KiB
Markdown
56 lines
1.8 KiB
Markdown
# pargv
|
|
|
|
Parse command line arguments into a list of args and a dict of kwargs.
|
|
|
|
# Installation
|
|
|
|
```python
|
|
pip install pargv
|
|
```
|
|
|
|
# Usage
|
|
|
|
By default, `pargv.parse_args()` uses `sys.argv` as command line arguments.
|
|
It can be used in the following way.
|
|
|
|
```python
|
|
from pargv import parse_args
|
|
|
|
args, kwargs = parse_args()
|
|
```
|
|
|
|
The arguments to be parsed can also be specified manually:
|
|
|
|
```python
|
|
from pargv import parse_args
|
|
|
|
args, kwargs = parse_args(argv=['pargv.py', '--name=pargv'])
|
|
```
|
|
|
|
# Specification
|
|
|
|
`parse_args` parses arguments in the following way, assuming the following command line arguments (`sys.argv`): `['/pargv/pargv.py', 'command', 'positional', '--flag', '--optional=value', 'test', '--output-file', 'filename', '-ab=one', 'two']`
|
|
|
|
By calling `args, kwargs = parse_args()`, this would return the following list and dict:
|
|
|
|
```python
|
|
args = ['/pargv/pargv.py', 'command', 'positional']
|
|
kwargs = {
|
|
'flag': True,
|
|
'optional': ['value', 'test'],
|
|
'output_file': 'filename',
|
|
'a': True,
|
|
'b': ['one', 'two'],
|
|
}
|
|
```
|
|
|
|
## Basic behaviour
|
|
|
|
- All arguments before the first option (starting with a hyphen) are considered positional arguments (`args`)
|
|
- All other arguments are considered optional keyword arguments (`kwargs`)
|
|
- Optional arguments without leading hyphens are considered as values to preceding keyword arguments
|
|
- One value of an option is stored as a string, multiple values are stored as a list
|
|
- Flags are stored with the value `True` in the dict
|
|
- Up to 2 leading hyphens are stripped from options, all other hyphens are converted into underscores (`---test-this-` would become the key `_test_this_` in the dict)
|
|
- For multiple short options such as `-vao=file.ext` or `-vao file.ext`, the last option (`o`) is set to the specified value, while other options (`v` and `a`) are set to `True`.
|