Comment faire un python, programme de ligne de commande de saisie semi-automatique arbitraire des choses PAS interprète
Je suis conscient de la configuration de l'autocomplétion des objets python dans l'interpréteur python (sur unix).
- Google montre que de nombreux hits pour des explications sur la façon de le faire.
- Malheureusement, il y a tellement de références qu'il est difficile de trouver ce que je dois faire, ce qui est légèrement différent.
J'ai besoin de savoir comment faire pour activer l'onglet auto/d'achèvement de l'arbitraire des éléments dans un programme de ligne de commande écrit en python.
Mon cas d'utilisation spécifiques est une commande de ligne de programme en python qui doit envoyer des e-mails. Je veux être en mesure de saisie semi-automatique des adresses e-mail (j'ai les adresses sur le disque) lorsque l'utilisateur tape une partie de celui-ci (et éventuellement appuie sur la touche TAB).
Je n'ai pas besoin de fonctionner sur windows ou mac, linux.
- Cette blog devrait faire des trucs avec la config .pythonrc fichier.
Vous devez vous connecter pour publier un commentaire.
Utiliser Python
readline
liaisons. Par exemple,Officiel module docs ne sont pas beaucoup plus détaillée, voir la readline docs pour plus d'info.
Suivez les cmd documentation et vous serez amende
De sortie pour tab -> tab -> send -> tab -> tab -> f -> onglet
Puisque vous dites PAS "interprète" dans votre question, je suppose que vous ne voulez pas de réponses concernant python readline et ainsi de suite. (modifier: avec le recul, ça n'est évidemment pas le cas. Ho hum. Je pense que cette info est intéressante de toute façon, donc je vais le laisser ici.)
Je pense que vous pourriez être après cette.
C'est à propos de l'ajout de coquille de fin de niveau pour des commandes arbitraires, l'extension de bash propre onglet achèvement.
En un mot, vous allez créer un fichier contenant une coquille fonction qui va générer des complétions possibles, l'enregistrer dans
/etc/bash_completion.d/
et l'enregistrer avec la commandecomplete
. Voici un extrait de la page du lien:Dans ce cas, la saisie
foo --[TAB]
vous donnera les valeurs de la variableopts
, c'est à dire--help
,--verbose
et--version
. Pour vos besoins, vous aurez essentiellement souhaitez personnaliser les valeurs qui sont mis enopts
.Avez un oeil à l'exemple sur la page du lien, c'est tout assez simple.
Je suis surpris que personne n'a mentionné argcomplete, voici un exemple de la documentation:
Ici est une version de travail du code qui a été très fournie par ephemient ici (merci).
Vous pouvez essayer d'utiliser le Invite Python Toolkit, une bibliothèque pour la construction interactive des applications en ligne de commande Python.
La bibliothèque, il est facile d'ajouter interactif de saisie semi-automatique, permettant à l'utilisateur d'utiliser le Tab pour déficients défiler les choix disponibles. La bibliothèque est multi-plateforme (Linux, OS X, FreeBSD, OpenBSD, Windows). Exemple:
(Source de l'Image: pcgli)
Les réponses du bon travail, mais j'ai open source une saisie semi-automatique de la bibliothèque que j'ai écrit au travail. Nous avons pu l'utiliser pendant un certain temps dans la production et il est rapide, stable et facile à utiliser. Il dispose même d'un mode de démonstration de sorte que vous pouvez tester rapidement ce que vous obtenez lorsque vous tapez des mots.
À installer, il suffit d'exécuter:
pip install fast-autocomplete
Voici un exemple:
Paiement: https://github.com/wearefair/fast-autocomplete pour le code source.
Et voici une explication de la façon dont il fonctionne: http://zepworks.com/posts/you-autocomplete-me/
Il traite de la mauvaise orthographe et en option de tri par le poids de la parole. (disons
burrito
est plus important quebook
, alors vous donnezburrito
plus "compter" et il s'affichera en premier avant debook
dans les résultats.Mots est un dictionnaire et chaque mot a un contexte. Par exemple, le "comte", comment faire pour afficher le mot, un autre contexte autour de la parole, etc. Dans cet exemple, les mots n'ont pas de contexte.