Je sais comment configurer l'auto-complétion des objets python dans l'interpréteur python (sous unix).
- Google affiche de nombreux appels pour des explications sur la façon de procéder.
- Malheureusement, il y a tellement de références à cela qu'il est difficile de trouver ce que j'ai besoin de faire, ce qui est légèrement différent.
J'ai besoin de savoir comment activer, tabulation / complétion automatique d'éléments arbitraires dans un programme de ligne de commande écrit en python.
Mon cas d'utilisation spécifique est un programme python en ligne de commande qui doit envoyer des e-mails. Je veux pouvoir saisir automatiquement les adresses e-mail (j'ai les adresses sur le disque) lorsque l'utilisateur en tape une partie (et appuie éventuellement sur la touche TAB).
Je n'en ai pas besoin pour fonctionner sur Windows ou Mac, juste Linux.
python
linux
unix
command-line
autocomplete
Paul D. Eden
la source
la source
Réponses:
Utilisez les
readline
liaisons de Python . Par exemple,Les documents officiels du module ne sont pas beaucoup plus détaillés, consultez les documents readline pour plus d'informations.
la source
Suivez la documentation cmd et tout ira bien
Sortie pour onglet -> onglet -> envoyer -> onglet -> onglet -> f -> onglet
la source
Puisque vous dites "PAS d'interprète" dans votre question, je suppose que vous ne voulez pas de réponses impliquant Python readline et autres. ( modifier : avec le recul, ce n'est évidemment pas le cas. Ho hum. Je pense que cette info est intéressante de toute façon, alors je vais la laisser ici. )
Je pense que vous pourriez être après ça .
Il s'agit d'ajouter la complétion au niveau du shell aux commandes arbitraires, étendant la complétion par tabulation de bash.
En un mot, vous allez créer un fichier contenant une fonction shell qui générera des complétions possibles, l'enregistrer
/etc/bash_completion.d/
et l'enregistrer avec la commandecomplete
. Voici un extrait de la page liée:Dans ce cas, le typage
foo --[TAB]
vous donnera les valeurs de la variableopts
, c'est--help
-à- dire--verbose
et--version
. Pour vos besoins, vous souhaiterez essentiellement personnaliser les valeurs inséréesopts
.Jetez un œil à l'exemple sur la page liée, tout est assez simple.
la source
Je suis surpris que personne n'ait mentionné argcomplete, voici un exemple tiré de la documentation:
la source
Voici une version complète du code qui a été très fournie par ephemient ici (merci).
la source
la source
readline.parse_and_bind('tab:complete')
parreadline.parse_and_bind ("bind ^I rl_complete")
Vous pouvez essayer d'utiliser le Python Prompt Toolkit , une bibliothèque pour créer des applications de ligne de commande interactives en Python.
La bibliothèque facilite l'ajout d'une fonctionnalité de saisie semi-automatique interactive, permettant à l'utilisateur d'utiliser la Tabclé pour parcourir visuellement les choix disponibles. La bibliothèque est multiplateforme (Linux, OS X, FreeBSD, OpenBSD, Windows). Exemple:
(Source de l'image: pcgli )
la source
Les réponses publiées fonctionnent bien, mais j'ai ouvert une bibliothèque à saisie semi-automatique que j'ai écrite au travail. Nous l'utilisons depuis un certain temps en production et il est rapide, stable et facile à utiliser. Il dispose même d'un mode démo pour que vous puissiez rapidement tester ce que vous obtiendriez en tapant des mots.
Pour l'installer, exécutez simplement:
pip install fast-autocomplete
Voici un exemple:
Paiement: https://github.com/wearefair/fast-autocomplete pour le code source.
Et voici une explication de son fonctionnement: http://zepworks.com/posts/you-autocomplete-me/
Il traite des fautes d'orthographe et éventuellement du tri en fonction du poids du mot. (disons que
burrito
c'est plus important quebook
, alors vous donnezburrito
un "compte" plus élevé et il apparaîtra en premierbook
dans les résultats.Les mots sont un dictionnaire et chaque mot peut avoir un contexte. Par exemple, le "compte", comment afficher le mot, un autre contexte autour du mot, etc. Dans cet exemple, les mots n'avaient aucun contexte.
la source