Mit dem readline-Modul (auf Unix-artigen Betriebssystemen) gibt es die Möglichkeit, bei Benutzer-Eingaben von der Konsole eine Dateinamen-Vervollständigung wie in der Shell zu erreichen. Dazu muss man sich eine eigene Completer-Funktion programmieren, die die Vervollständigung eines Strings übernimmt:
1 import dircache
2 import os
3
4 def completer(text, state):
5 """Return the next possible completion for 'text'.
6 This is called successively with state == 0, 1, 2, ... until it
7 returns None.
8 """
9 completions = []; #A list of all possible completions
10 (the_dir, incomplete) = os.path.split(text);
11 #A list of all files in the_dir:
12 files = dircache.listdir(os.path.join(".", the_dir));
13
14 #Find the entries of 'files' which match 'text':
15 for entry in files:
16 if entry.startswith(incomplete):
17 if os.path.isdir(os.path.join(the_dir, entry)):
18 entry = os.path.join(entry, "");
19 completions.append(os.path.join(the_dir, entry));
20 return completions[state];
Importiert man das readline-Module, so ist die Konsolen-Eingabe (z.B. bei raw_input) um Editierfunktionen erweitert, wie man sie aus der Shell kennt. Um nun die Dateinamen-Vervollständigung mittels obiger Funktion zu aktivieren, nimmt man noch folgende Einstellungen vor:
1 import readline
2 readline.set_completer_delims("")
3 readline.set_completer(completer)
4 readline.parse_and_bind("tab: complete") #Vervollständigung mittels TAB