Kommandozeileparameter i eie Klasse verbauen
Verfasst: Donnerstag 22. November 2018, 15:52
Hallo Leute,
leider konnte ich folgendes Problem nach stundenlanger Einsicht in Lektüren und Foren noch immer nicht Lösen:
Mein Programm soll eine Liste von Kommandozeilenparameter entgegennehmen mit dehnen ich anschließend arbeiten muss.
Das Ganze habe ich wie folgt geschrieben und funktioniert auch:
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", type = str,
help = "The input wants the file path in which you saved the csv data!")
ap.add_argument("-o", "--output", type = str,
help = "The output wants the file path in which you want to save the output!")
ap.add_argument("-s", "--sensors", default = [],
help = "Wants the Sensor Ids in form of Integers, separeted with a ,")
ap.add_argument("-r", "--resampling_delta", type = int, default = 600,
help = "Size of resampling time steps in seconds")
ap.add_argument("-w", "--window_smoothing", type = int, default = None,
help = "Size of the Time-Window")
parsed_params = ap.parse_args()
program_params = vars(parsed_params)
print(program_params)
Meine bsp Eingabe lautet: python Assignment_2.py -i test -s 45464
Ausgabe dazu: {'input': 'test', 'output': None, 'sensors': '45464', 'resampling_delta': 600, 'window_smoothing': None}
Mein Problem: ich möchte dem Ganzen etwas Struktur geben und eine Klasse schreiben in der ich meine Parameter für eine weitere Verarbeitung geschützt speichern kann und entnehmen kann. Ein Klasse nur für Parameter. Ohne die ganze Zahle meiner gescheiteten Versuche hier aufzulisten, eine Ungefähre Rohfassung:
class cl_param():
import argparse #import the package for the cl_param
ap = argparse.ArgumentParser() #ap = Arg_Parser from the imported package
ap.add_argument("-i", "--input", type = str,
help = "The input wants the file path in which you saved the csv data!")
ap.add_argument("-o", "--output", type = str,
help = "The output wants the file path in which you want to save the output!")
ap.add_argument("-s", "--sensors", default = [],
help = "Wants the Sensor Ids in form of Integers, separeted with a ,")
ap.add_argument("-r", "--resampling_delta", type = int, default = 600,
help = "Size of resampling time steps in seconds")
ap.add_argument("-w", "--window_smoothing", type = int, default = None,
help = "Size of the Time-Window")
parsed_params = ap.parse_args()
program_params = vars(parsed_params)
print(program_params)
def __init__(self,program_params):
self._input = program_params["input"]
self._output = program_params["output"]
self._sensors = program_params["sensors"]
self._resampling_delta = program_params["resampling_delta"]
self._window_smoothing = program_params["window_smoothing"]
def get_input(self)
return self._input
cl_param.get_input()
Laut meiner momentanen Kenntnissen bewirkt der Unterstrich nach "self." das die variable geschützt ist und aus dem Dictionary "program_params" werden meine Variablen erstellt. Meine Vermutung, eine solche Implementierung funktioniert nicht da das Objekt noch gar nicht erstellt wurde? cl_param.get_input() benötigt ein Argument, keine Ahnung welches? Jemand eine Idee wie man so etwas realisieren könnte?
Wie gesagt mein Ziel ist eine Klasse von der ich meine Kommandozeilenparameter bekomme und verarbeiten kann.
Außerdem möchte ich diese Parameter in anderen Klassen verwenden können, wie folgt müsste das dann ja auch so gehen, bekomme aber keinen Zugriff?
class nächste_Klasse(cl_param):
def __init__(self)
super().__init__()
Ein Dankeschön im voraus!!
leider konnte ich folgendes Problem nach stundenlanger Einsicht in Lektüren und Foren noch immer nicht Lösen:
Mein Programm soll eine Liste von Kommandozeilenparameter entgegennehmen mit dehnen ich anschließend arbeiten muss.
Das Ganze habe ich wie folgt geschrieben und funktioniert auch:
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", type = str,
help = "The input wants the file path in which you saved the csv data!")
ap.add_argument("-o", "--output", type = str,
help = "The output wants the file path in which you want to save the output!")
ap.add_argument("-s", "--sensors", default = [],
help = "Wants the Sensor Ids in form of Integers, separeted with a ,")
ap.add_argument("-r", "--resampling_delta", type = int, default = 600,
help = "Size of resampling time steps in seconds")
ap.add_argument("-w", "--window_smoothing", type = int, default = None,
help = "Size of the Time-Window")
parsed_params = ap.parse_args()
program_params = vars(parsed_params)
print(program_params)
Meine bsp Eingabe lautet: python Assignment_2.py -i test -s 45464
Ausgabe dazu: {'input': 'test', 'output': None, 'sensors': '45464', 'resampling_delta': 600, 'window_smoothing': None}
Mein Problem: ich möchte dem Ganzen etwas Struktur geben und eine Klasse schreiben in der ich meine Parameter für eine weitere Verarbeitung geschützt speichern kann und entnehmen kann. Ein Klasse nur für Parameter. Ohne die ganze Zahle meiner gescheiteten Versuche hier aufzulisten, eine Ungefähre Rohfassung:
class cl_param():
import argparse #import the package for the cl_param
ap = argparse.ArgumentParser() #ap = Arg_Parser from the imported package
ap.add_argument("-i", "--input", type = str,
help = "The input wants the file path in which you saved the csv data!")
ap.add_argument("-o", "--output", type = str,
help = "The output wants the file path in which you want to save the output!")
ap.add_argument("-s", "--sensors", default = [],
help = "Wants the Sensor Ids in form of Integers, separeted with a ,")
ap.add_argument("-r", "--resampling_delta", type = int, default = 600,
help = "Size of resampling time steps in seconds")
ap.add_argument("-w", "--window_smoothing", type = int, default = None,
help = "Size of the Time-Window")
parsed_params = ap.parse_args()
program_params = vars(parsed_params)
print(program_params)
def __init__(self,program_params):
self._input = program_params["input"]
self._output = program_params["output"]
self._sensors = program_params["sensors"]
self._resampling_delta = program_params["resampling_delta"]
self._window_smoothing = program_params["window_smoothing"]
def get_input(self)
return self._input
cl_param.get_input()
Laut meiner momentanen Kenntnissen bewirkt der Unterstrich nach "self." das die variable geschützt ist und aus dem Dictionary "program_params" werden meine Variablen erstellt. Meine Vermutung, eine solche Implementierung funktioniert nicht da das Objekt noch gar nicht erstellt wurde? cl_param.get_input() benötigt ein Argument, keine Ahnung welches? Jemand eine Idee wie man so etwas realisieren könnte?
Wie gesagt mein Ziel ist eine Klasse von der ich meine Kommandozeilenparameter bekomme und verarbeiten kann.
Außerdem möchte ich diese Parameter in anderen Klassen verwenden können, wie folgt müsste das dann ja auch so gehen, bekomme aber keinen Zugriff?
class nächste_Klasse(cl_param):
def __init__(self)
super().__init__()
Ein Dankeschön im voraus!!