Werteliste/-bereich via commandline übergeben

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hallo,

um mehrere Zeiten gleichzeitig zu übergeben, verwende ich derzeit folgende Syntax...

Code: Alles auswählen

$ denkdran 2014.4.12 12:00 till 2014.4.13 and 2014.4.18 till 2014.4.19 9:00 ....
... worin anhand der Schlüsselworte 'till' und 'and' Wertebereiche erkannt und voneinander getrennt werden. Letztlich werden aus diesem Beispiel zwei `DateTimeScope` Objekte:
  • [begin=(2014, 4, 12, 12, 0), end=(2014, 4, 13, 23, 59)]
  • [begin=(2014, 4, 18, 0, 0), end=(2014, 4, 19, 9, 0)]
Nun möchte ich die Kalenderdaten in einem Format abspeichern, wie sie auch per CLI übergeben werden, damit eine Datendatei in gewohnter Weise manuell bearbeitet werden kann. Der Wert für obiges Beispiel würde darin demnach so aussehen:

Code: Alles auswählen

'scopes': '2014.04.12T12:00 till 2014.04.13 and 2014.04.18 till 2014.04.19T09:00'
Ich bin mir jetzt einfach unsicher, ob ich die Lösung mit den Schlüsselworten beibehalten soll oder ob es vielleicht eine etwas elegantere Lösung gibt, die sich gleichermaßen zur Argumentenübergabe als auch zur Speicherung eignet.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Warum nicht so?

Code: Alles auswählen

denkdran --add='2014.4.12/12:00 - 2014.4.13'
denkdran --add='2014.4.18 - 2014.4.19/9:00'
Das Speichern könnte man im JSON-Format machen:

Code: Alles auswählen

In [24]: entries
Out[24]: 
[{'end': {'date': '2014.04.13', 'time': None},
  'start': {'date': '2014.04.12', 'time': '12:00'}},
 {'end': {'date': '2014.04.19', 'time': '09:00'},
  'start': {'date': '2014.04.18', 'time': None}}]

In [25]: print json.dumps(entries, indent=2)
[
  {
    "start": {
      "date": "2014.04.12", 
      "time": "12:00"
    }, 
    "end": {
      "date": "2014.04.13", 
      "time": null
    }
  }, 
  {
    "start": {
      "date": "2014.04.18", 
      "time": null
    }, 
    "end": {
      "date": "2014.04.19", 
      "time": "09:00"
    }
  }
]
Natürlich kann es nicht schaden, den Terminen auch Namen zu geben. Vermutlich hast du diese aber nur wegen dem Minimalbeispiel weggelassen, oder?
Antworten