Autocompletar de Python desde la carpeta [duplicado]

Aug 26 2020

He estado jugando con Python últimamente y he creado un archivo de Python que lee archivos en un directorio específico. El archivo específico que leerá se pasa desde la línea de comando:

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

Tengo curiosidad por saber si hay alguna manera de que pueda completar con la pestaña los nombres de los archivos en DIR

Respuestas

Ajordat Aug 26 2020 at 05:35

No es directamente una funcionalidad de autocompletar, pero puede enumerar todo el contenido del directorio y buscar todos los archivos / carpetas que comienzan con la entrada proporcionada por el usuario. De esta manera, si solo se encuentra un valor, esa es la única posibilidad y habría encontrado el archivo deseado.

El código debería ser similar al siguiente:

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}'")