Seite 1 von 1

Hilfe bei Problemen mit argparse

Verfasst: Freitag 22. April 2016, 08:55
von JohannesGolf
Hallo zusammen,

ich hab Probleme mit argparse.
Ich finde sie etwas komplex.
Ich möchte eigentlich, wenn man mein Programm (das Parameter benötigt) im Terminal aufruft, OHNE die benötigten Parameter eine Art
"Hilfe" ausgibt die sagt, so verwendet man es.

Also ich meine es so:
Im Terminal:
python <programname>.py

Ausgabe:
Warning: <Programmname>.py kann so nicht ausgeführt werden.
Bitte Nach dem Programmname noch ein Pard von einem Ordner übergeben
Wenn er dann diesen Parametern übergeben hat, den nachfolgenden Parameter aber falsch eingegeben hat, soll eine andere Meldung kommen.


Also ich meine es so:
Im Terminal:
python <Programmname>.py <Pfad zum Ordner> Z

Ausgabe:
Warning: <Parameter> ist nicht Gültig
Gültige Parameter sind: "M" für Minuten, "H" für Stunden oder "D" für Tage
Könnt Ihr mir ein Beispiel bringen, wie ich das so umsetzten kann?
Ich weiss, dass das jetzt etwas viel verlangt ist, aber ich verzweifle schon seit 2 Tagen daran.

Danke im Voraus

Grüße JohannesGolf

Re: Hilfe bei Problemen mit argparse

Verfasst: Freitag 22. April 2016, 09:41
von BlackJack
@JohannesGolf: Das ohne die Angabe der erwarteten Argumente eine Hilfe ausgegeben wird ist doch das ganz normale Verhalten von `argparse`‽ Und für die Auswahl von fest vorgegeben Werten suchst Du `choices`:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import, division, print_function
from argparse import ArgumentParser


def main():
    parser = ArgumentParser()
    parser.add_argument('path', metavar='PATH', help='Path to folder.')
    parser.add_argument(
        'time_unit', choices=['M', 'H', 'D'],
        help='Unit of time. possible values are M = minutes, H = hours,'
            ' D = days.'
    )
    arguments = parser.parse_args()


if __name__ == '__main__':
    main()
Aufruf ohne Argumente:

Code: Alles auswählen

$ python forum7.py 
usage: forum7.py [-h] PATH {M,H,D}
forum7.py: error: too few arguments
Expliziter Abruf der Hilfe:

Code: Alles auswählen

$ python forum7.py -h
usage: forum7.py [-h] PATH {M,H,D}

positional arguments:
  PATH        Path to folder.
  {M,H,D}     Unit of time. possible values are M = minutes, H = hours, D =
              days.

optional arguments:
  -h, --help  show this help message and exit
Falsches Argument für die Zeiteinheit:

Code: Alles auswählen

$ python forum7.py /tmp Z
usage: forum7.py [-h] PATH {M,H,D}
forum7.py: error: argument time_unit: invalid choice: 'Z' (choose from 'M', 'H', 'D')

Re: Hilfe bei Problemen mit argparse

Verfasst: Freitag 22. April 2016, 10:04
von JohannesGolf
Vielen Danke BlackJack.
Genau das hab ich gebraucht.