Python >> Tutoriel Python >  >> Python

Comment obtenir l'historique des commandes en Python ?

Si vous travaillez avec la ligne de commande sous Windows ou le terminal sous Linux et macOS, vous connaissez la fonctionnalité de l'historique de la ligne de commande. Vous pouvez accéder à toutes les commandes émises précédemment avec les touches fléchées vers le haut ou vers le bas.

En tant que codeur Python, vous voulez pouvoir tout contrôler depuis votre shell Python. Cela conduit naturellement à la question suivante.

Formulation du problème : Comment obtenir l'intégralité de l'historique des commandes en Python – toutes les commandes qui ont été exécutées dans la session Python interactive ?

Méthode 1 :Python 3 One-Liner avec readline.get_history_item()

Le readline module fonctionne en combinaison avec des systèmes d'exploitation de type Unix tels que macOS et Linux. Ce one-liner est facile à copier et coller dans votre shell Python pour accéder à l'historique des commandes en Python :

import readline; print('\n'.join([str(readline.get_history_item(i + 1)) for i in range(readline.get_current_history_length())]))

Méthode 2 :Python 3 Multi-Liner avec readline

Ce multi-liner fait la même chose que le one-liner précédent - il est juste plus lisible et moins concis. 😉

import readline
for i in range(readline.get_current_history_length()):
    print(readline.get_history_item(i + 1))

Méthode 3 :Python 2 One-Liner avec readline

D'accord, certaines personnes peuvent encore utiliser Python 2. Dans ce cas, vous devrez modifier légèrement le one-liner précédent pour obtenir :

import readline; print '\n'.join([str(readline.get_history_item(i + 1)) for i in range(readline.get_current_history_length())])

Méthode 4 :Imprimer un fichier pour un système d'exploitation de type Unix

Le fichier suivant contient l'historique :~/.python_history . Vous pouvez y accéder avec la commande suivante sur macOS ou Linux :

$ cat ~/.python_history

Notez que vous devez quit() l'interpréteur pour l'historique de la session en cours à inclure dans le fichier ~/.python_history .

Méthode 5 :Écrire l'historique dans un fichier

Le module readline fournit également une fonction write_history_file() pour écrire l'historique des commandes dans un fichier avec le nom, disons, 'python_command_history.py ‘. Passez le nom de fichier souhaité dans la fonction et Python videra les commandes Python dans un nouveau fichier avec le nom de fichier donné.

import readline
readline.write_history_file('python_command_history.py')

Méthode 6 :Utilisez les flèches vers le haut et vers le bas si vous exécutez Python Shell à partir de la ligne de commande

Si vous avez ouvert une session Python à partir de la ligne de commande, vous pouvez utiliser les flèches haut et bas pour obtenir les commandes précédentes car Python utilise le même mécanisme d'historique que le système d'exploitation :

Humour de programmation

Livre Python One-Liners :maîtrisez d'abord la ligne unique !

Les programmeurs Python amélioreront leurs compétences en informatique avec ces lignes utiles.

Python One-Liners vous apprendra à lire et à écrire des « lignes simples » :des déclarations concises de fonctionnalités utiles regroupées dans une seule ligne de code. Vous apprendrez à décompresser et à comprendre systématiquement n'importe quelle ligne de code Python, et à écrire du Python éloquent et puissamment compressé comme un expert.

Les cinq chapitres du livre couvrent (1) les trucs et astuces, (2) les expressions régulières, (3) l'apprentissage automatique, (4) les principaux sujets de science des données et (5) les algorithmes utiles.

Des explications détaillées des one-liners introduisent les concepts clés de l'informatique etdéveloppez vos compétences en matière de codage et d'analyse . Vous découvrirez les fonctionnalités Python avancées telles que la compréhension de liste , tranchage , fonctions lambda , expressions régulières , carte et réduire fonctions et affectations de tranches .

Vous apprendrez également à :

  • Exploiter les structures de données pour résoudre des problèmes réels , comme utiliser l'indexation booléenne pour trouver des villes avec une pollution supérieure à la moyenne
  • Utiliser les bases de NumPy comme tableau , forme , axe , tapez , diffusion , indexation avancée , tranchage , tri , recherche , agrégation , et statistiques
  • Calculer des statistiques de base de tableaux de données multidimensionnels et les algorithmes K-Means pour l'apprentissage non supervisé
  • Créer davantage d'expressions régulières avancées en utilisant le regroupement et groupes nommés , anticipations négatives , caractères échappés , espaces blancs, jeux de caractères (et jeux de caractères négatifs ) et opérateurs gourmands/non gourmands
  • Comprendre un large éventail de sujets informatiques , y compris les anagrammes , palindromes , surensembles , permutations , factorielles , nombres premiers , Fibonacci chiffres, obscurcissement , recherche , et tri algorithmique

À la fin du livre, vous saurez comment écrire Python dans sa forme la plus raffinée , et créez de belles pièces concises d'"art Python" en une seule ligne.

Obtenez vos Python One-Liners sur Amazon !!

Références

  • https://docs.python.org/3/library/readline.html#readline.get_current_history_length
  • https://stackoverflow.com/questions/44894992/how-can-i-access-command-prompt-history-with-python
  • https://stackoverflow.com/questions/6558765/how-do-you-see-the-entire-command-history-in-interactive-python
  • https://medium.com/@krembo/command-history-in-interactive-python-interpreter-44977aadc617
  • https://medium.com/@oalejel/printing-command-history-within-the-python-interactive-terminal-repl-simplified-5fd202c64880