Seite 1 von 1

Optparse und tab completition funktioniert nicht

Verfasst: Montag 30. April 2007, 19:11
von bennym
Hallo!

Ich habe folgendes Problem:
Ich im folgenden Script einen Pfad zur Datei als Parameter angeben, soweit so gut.

Will ich aber per tab completion die Datei auswählen, kann ich nur den Pfad zum Ordner auswählen wo die Datei drinnliegt, nicht aber die Datei.

z.B:
Dateipfad: /home/benny/Desktop/test.txt
Wenn ich dann script mit -f den Pfad übergeben will, kann ich mit <tab> nur bis zum letzten übergeordneten Ordner kommen. te<tab> sollte jetzt ja auf test.txt kompletieren, tut es aber nicht :(

Komisch ist aber, dass wenn ich die Datei mit einer .py Endung versehe automatisch kompletiert wird. Unterscheidet hier optparse anhand der Dateiendung oder liegt das an was anderem?

Wie krieg ich das so hin, sodass auf alle Dateitypen/Endungen kompletiert wird?

Vielen Dank im Vorraus

mfg benny

Code: Alles auswählen

#!/usr/bin/python
# -*-coding=utf-8 -*-

from optparse import OptionParser
import os


def main():
    parser = OptionParser()
      
    parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
    
    (options, args) = parser.parse_args()

    z = options.filename
    
    print z 



if __name__ == '__main__':
    main()

Verfasst: Montag 30. April 2007, 19:15
von mitsuhiko

Verfasst: Montag 30. April 2007, 20:13
von lunar
Mmmh, das vervollständigt doch nur die Optionen selbst, nicht aber die Argumente. Woher sollte optcomplete den wissen, dass '--file' eine Datei erwartet?

Ich würde eher darauf tippen, dass die bash das vorangestellte "python" (in "python skript.py --file") als Basis nimmt und deswegen nur *.py zulässt.

Verfasst: Dienstag 1. Mai 2007, 17:22
von bennym
lunar hat geschrieben:
Mmmh, das vervollständigt doch nur die Optionen selbst, nicht aber die Argumente. Woher sollte optcomplete den wissen, dass '--file' eine Datei erwartet?

Ich würde eher darauf tippen, dass die bash das vorangestellte "python" (in "python skript.py --file" als Basis nimmt und deswegen nur *.py zulässt.
Jo, so is es. Die bash ist schuld :roll:
Egal, wenn ich das ohne Endung speichere, bietet tab completition alle Dateien an.

Die bash is einfach böse :D . Wenn ichs die Datei mit der Endung .sh abspeichere funktioniert tab completition. Sowas eigensinniges^^


mfg benny

Verfasst: Mittwoch 2. Mai 2007, 10:10
von birkenfeld
Können wir uns auf "completion" einigen? ;)

Verfasst: Mittwoch 2. Mai 2007, 19:58
von bennym
Können wir uns auf "completion" einigen? :wink:
Aua, das tut weh. Ich werds mir merken :D