Forum: PC-Programmierung Autovervollständigung Auf unix um Python Script zu starten


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Leon (Gast)


Lesenswert?

Hallo,
ich hätte eine Frage zu einem Python Projekt. Ich habe ein Python 
Projekt auf einem unix Server, in welchem ich einen Parameter mitgebe 
Bsp.:

./mein_Projekt Hallo
print("Hallo")
./mein_Projekt Tschüss
print("Tschüss")

Es gibt auf Unix Ja diese Autovervollständigung, wenn man den Anfang 
eines Datei namens eingibt kann man diesen mit Tab vervollständigen. 
Meine frage währe jetzt, ob ich so etwas für meine Parameter machen 
kann, obwohl diese nicht als Datei bestehen?

von Imonbln (Gast)


Lesenswert?

Leon schrieb:
> Meine frage währe jetzt, ob ich so etwas für meine Parameter machen
> kann, obwohl diese nicht als Datei bestehen?

Ja das geht die Technik heißt bash autocomplete und es gibt ein pip 
module argcomplete welches dir hilf das zu erreichen. d.h. wenn du denn 
argparser verwendest um die Parameter zu parsen.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Leon schrieb:
> Hallo,
> ich hätte eine Frage zu einem Python Projekt. Ich habe ein Python
> Projekt auf einem unix Server, in welchem ich einen Parameter mitgebe
> Bsp.:
>
> ./mein_Projekt Hallo
> print("Hallo")
> ./mein_Projekt Tschüss

Hmm, Umlaute in Kommandozeilen-Optionen. Kann man machen, kann man sich 
je nach Locale später auch drüber ärgern.

> Es gibt auf Unix Ja diese Autovervollständigung,

Nicht Unix (oder Linux). Das ist eine Eigenschaft der jeweiligen Shell. 
Manche alten Shells können es gar nicht. Die weit verbreitete bash kann 
es.

> Meine frage währe jetzt, ob ich so etwas für meine Parameter machen
> kann, obwohl diese nicht als Datei bestehen?

Lade folgendes in die bash (ich konnte mich nicht überwinden den Umlaut 
zu nehmen):
1
complete -W "Hallo Tschuess" mein_Projekt
Das ist eine der simpelsten Arten eine Autocompletion zu definieren. 
"complete" kann einiges mehr.

Noch ein paar Anmerkungen:
1
mein_Projekt
So eine Kombination aus Unterstrich und Kamelhöcker-Notation vermeidet 
man in jeder Programmiersprache, auch in Shell-Scripten. In 
Shell-Skripten vermeidet man sogar beides einzeln. Die "natürliche" 
Schreibweise auf Unix/Linux-Systemen ist durchgehend Kleinschreibung. 
Keine Kamelhöcker.

Meist, auch wenn es hässlich ist, schreibt man alles zusammen. Also
1
meinprojekt

Wenn das zu hässlich aussieht, dann eine Trennung durch '-', nicht '_', 
weil man für das '-' keine Shift-Taste drücken muss:
1
mein-projekt

Programmnamen mit '_' findet man zwar auch in den offiziellen 
Distributionen, aber daran erkennt man, dass mal wieder ein paar 
Skript-Kiddies am Werk waren.

Zu Umlauten habe ich schon was gesagt. Wenn immer es geht Programmname, 
Optionen und Flags in 7-Bit ASCII.

Das gilt nicht für Parameter. Da hat man keine Kontrolle drüber. Wenn 
jemand in einer Latin-1 oder z.B. Unicode-Locale einem Programm einen 
Parameter wie "Gehäuseübergröße.txt" mitgeben möchte dann kann man das 
nicht verhindern.

: Bearbeitet durch User
von Norbert (Gast)


Lesenswert?

Hannes J. schrieb:
> Hmm, Umlaute in Kommandozeilen-Optionen. Kann man machen, kann man sich
> je nach Locale später auch drüber ärgern.
> Lade folgendes in die bash (ich konnte mich nicht überwinden den Umlaut
> zu nehmen):

Da musste ich grinsen.
Ging mir bis vor einiger Zeit ähnlich, aber dann, gegen Ende des letzten 
Jahrtausends habe ich beherzt auf UTF-8 umgestellt. ;-)

Wenn man jetzt noch daran denkt das Python3 so etwas erlaubt:
1
def verfügbare_Zeit_µs():

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.