Problem mit getopt ...

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
drnicolas
User
Beiträge: 105
Registriert: Sonntag 24. Juli 2016, 10:32

Ich verwende zum Parsen der Kommandozeile getopt.
Leider ergeben sich mehrere Problemchen:

1. getopt scheint sehr empfindlich zu sein auf zusätzliche <SPACE> in der Kommandozeile. Ich bekomme dann einen leeren Parameter, was mir eine lange Fehlersuche beschert hat.
Kann ich das verhindern?

2. Ich habe mehrere Parameter, die ggf. einen Text mit Leerstellen haben, z.B --title <und hier kommt der Text mit Leerstellen, aber auch Kommas>.
Wie behandle ich das am besten?

Vielen Dank!
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

1. Benutze argparse.
2. da mußt Du Dir selbst etwas schreiben. Was soll denn passieren, wenn der Titel ein - enthält?
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@drnicolas: Leerzeichen sollten eigentlich von der Shell/in der Shell schon abgefrühstückt werden. Das heisst sowohl das die Shell das zerlegt, als auch das man mit Anführungszeichen in der Shell beim Aufruf dafür sorgen muss das Leerzeichen die man haben will, den Aufruf ”überleben”. Im Programm selbst muss man da in beiden Fällen nichts machen.

Zumindest sofern wir hier nicht von eher exotischen Plattformen wie DOS reden wo Prozesse vom System keine einzelnen Argumente bekommen sondern *eine* (Byte)Zeichenkette die man als Programmierer dann selbst zerlegen darf. Aber selbst da muss man das nur machen wenn a) sich die Laufzeitbibliothek der Programmiersprache sich nicht darum kümmert oder b) man aus irgendwelchen Gründen absichtlich die unverarbeitete Kommandozeile verarbeiten möchte.

Kannst Du mal konkrete Beispiele für das erste Problem zeigen?

Und beim zweiten Problem muss man den Titel beim Aufruf halt so angeben: ``program --title "Dies ist der Titel mit -Leerzeichen- und Minuszeichen" …``.

Edit: `getopt` würde ich auch auf keinen Fall mehr verwenden. Wenn es etwas ausserhalb der Standardbibliothek sein darf finde ich auch `click` sehr nett um Kommandozeilenanwendungen mit einer API auszustatten.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten