Hilfe bei Problemen mit argparse

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
JohannesGolf
User
Beiträge: 34
Registriert: Montag 10. März 2014, 09:27

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
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')
JohannesGolf
User
Beiträge: 34
Registriert: Montag 10. März 2014, 09:27

Vielen Danke BlackJack.
Genau das hab ich gebraucht.
Antworten