ich befasse mich gerade mal wieder mit meinen "alten" Projekten und verzweifle an meiner Implementierung des Commandline Parsers. Benutzt wird argparse mit Python 3.7.6 64 Bit auf Windows (Mac und Linux).
Eigentlich soll es gar nicht weiter schlimm sein. Ich will mein Python3 Script mit und ohne Parameter starten können. Das funktionier leider nur bedingt oder gar nicht und ich finde den Fehler nicht.
Zuerst mal das Script (commandline.py):
Code: Alles auswählen
#!/usr/bin/env python3
import sys
import argparse
class CommandLineException(BaseException):
pass
class CommandLine():
'''
Klasse zum Speichern und auswerten der Commandline Parameters
'''
def __init__(self):
self._parser = self.__create_parser()
self._namespace = None
def __create_parser(self):
'''
Kommandozeilenparser erstellen
'''
parser = argparse.ArgumentParser(description='rico...')
parser.add_argument('--debug', '-d', action='store_true', help='Enable debug mode...')
parser.add_argument('--version', '-v', action='version', version= f"{parser.prog} version 1.0.0", help='Versionsinfo zum Script ausgeben...')
return parser
def parse_params(self, args):
'''
Parsen der Befehlszeilenparameter starten. Bei Fehler wird eine CommandLineException
geworfen.
'''
# self._namespace = self._parser.parse_args(args)
# Abfangen des vorzeitigen Beendens des Scripts, wenn Hilfe oder Version ausgegeben wird
try:
self._namespace = self._parser.parse_args(args)
except SystemExit:
raise CommandLineException
if __name__ == '__main__':
o = CommandLine()
try:
o.parse_params(sys.argv)
except CommandLineException:
print("fehler")
Code: Alles auswählen
usage: commandline.py [-h] [--debug] [--version]
commandline.py: error: unrecognized arguments: c:/Users/irgendwo/.../commandline.py
fehler
Vielleicht sehe ich den Wald vor lauter Bäumen nicht, aber ich bin langsam am Verzweifeln... Es muss doch möglich sein die Parameter korrekt zu parsen und wenn keine Parameter übergeben wurden, das zu übergehen.
Kann mir bitte jemand auf die Sprünge helfen? Vielen Dank.
VG mhard666.