Python automatisch aus Ordner [duplizieren]

Aug 26 2020

Ich habe in letzter Zeit mit Python herumgespielt und eine Python-Datei erstellt, die aus Dateien in einem bestimmten Verzeichnis liest. Die spezifische Datei, die gelesen wird, wird über die Befehlszeile übergeben:

import sys
DIR = /path/to/files
with open(DIR + sys.argv[1]) as fil:
    print(fil.readlines())

# python testPy.py fileName
# >>> prints contents of file

Ich bin gespannt, ob es eine Möglichkeit gibt, die Namen der Dateien in der Registerkarte zu vervollständigen DIR

Antworten

Ajordat Aug 26 2020 at 05:35

Es handelt sich nicht direkt um eine Autovervollständigungsfunktion, aber Sie können den gesamten Inhalt des Verzeichnisses auflisten und nach allen Dateien / Ordnern suchen, die mit der vom Benutzer bereitgestellten Eingabe beginnen. Wenn nur ein einziger Wert gefunden wird, ist dies die einzige Möglichkeit, und Sie hätten die Zieldatei gefunden.

Der Code sollte ungefähr so ​​lauten:

import os

DIR = "/path/to/files"
content = os.listdir(DIR)
filename = sys.argv[1]

candidates = [path for path in content if path.startswith(filename)]

if len(candidates) == 1:
    print(os.path.join(DIR, candidates[0]))
elif len(candidates) > 1:
    print(f"Multiple options: {candidates}")
else:
    print(f"There are no files starting with '{filename}'")