2016-07-15 4 views
-2

Ich habe dieses "Problem" (aus Mangel an besseres Wort), wenn ich mein Python-Skript mit Argumenten ausführen, kann ich nicht die Registerkarte Vervollständigung Funktion von Unix-Konsolen. Zum Beispiel, wenn ich eine Datei in die Skriptausführung einfügen möchte. Hoffe, diese Beispiele veranschaulichen besser mein Problem.Registerkarte Autocomplete auf Python-Skript-Ausführung in der Konsole

Fall 1

>python3 script.py 
[tab] 
folder/ folder1/ data.dat 

Fall 2

>python3 script.py -f d 
[tab] 
folder/ folder1/ (file data.dat not showing) 

Ideal Fall

>python3 script.py -f data.dat - n 2 .... 

Hoffnung machte ich mich klar ausgedrückt, und jemand kann mir dies erklären, ich raten i Python lässt dies nicht zu oder muss irgendwie konfiguriert werden.

Ich argparse in meinem Skript mit dem üblichen Code ..

ap.add_argument('-f', '--file', type=str, action='store', help='Input file.',metavar='FILE') 

ich bereits mit type=argparse.FileType('r') versucht haben, aber ist das gleiche.

Ich möchte dies erreichen, weil die Dateien, die ich gerade arbeite, lange Namen haben, und es wurde gebeten, die Dateinamen nicht jedes Mal zu schreiben.

Wie auch immer, danke fürs Lesen.

+3

Es hat absolut nichts mit Python zu tun. Welche Shell/Betriebssystem verwenden Sie? –

+0

Debian 8 Wheezy oder Ubuntu 16.04, es ist das gleiche bei beiden, mit den Standard-Shells. – Kako

+1

Also Bash, ich vermute. Das funktioniert ganz gut für mich in bash, obwohl ich nicht die gleichen Distributionen verwende wie du. Es sollte nach dem letzten Buchstaben filtern, den Sie eingeben. Wenn Sie also "-fd" eingeben, würde ich nicht erwarten, dass es 'folder /' oder 'folder' /' anzeigt, da keiner von beiden mit einem 'd' –

Antwort

0

Ok, für eine Arbeit um diese. Mit Python 3.5 kann ich erreichen, was ich wollte, Namen von Dateien in bash automatisch vervollständigen, wenn ein Python-Skript ausgeführt wird.

so mit

> python3 script.py 
[tab] 
folder/ folder1/ data.dat 
> python3 script.py -f d 
[tab] 
folder/ folder1/ (file data.dat not showing) 

und mit Python 3,5

> python3.5 script.py -f d 
[tab] 
folder/ folder1/ data.dat 

diese Seiten führen mich zu einigen auch wertvolle Antworten.

https://docs.python.org/3/tutorial/interactive.html

https://argcomplete.readthedocs.io/en/latest/

Nochmals vielen Dank.

Verwandte Themen