web-dev-qa-db-fra.com

Fichier de chat sur terminal à une vitesse particulière des lignes par seconde

Je suis paresseux et je pourrais écrire un script pour le faire, mais je suis même trop paresseux pour penser à la façon de le faire.

Je fais souvent des choses comme:

cris$ python runexperiment.py > output.txt
cris$ cat output.txt

Parfois, lorsque vous regardez la longue sortie d'une expérience, j'aime laisser la page simplement défiler et regarder les modèles successifs et se disperser. Mais l'utilisation de chat sur un fichier avec 1 million de lignes finies dans peut-être 5 secondes. Ceci est trop rapide, même pour moi.

Y a-t-il un moyen de ralentir la vitesse de visualisation du fichier, de quelque chose comme un "utilitaire de défilement"? Je veux des lignes rapides, mais pas 200k une seconde (toutes vraisemblablement l'affichage n'enregistrerait même jamais de toute façon).

Quelque chose comme

cris$ scroll -lps=300 output.txt

Et ensuite assis et regarder 300 lignes par seconde, le passé serait idéal, j'imagine.

15
Cris Stringfellow

Je suis en retard à la fête, mais j'ai trouvé que ce serait un exercice d'apprentissage utile pour essayer Python, alors je vais mettre en place ce que j'ai obtenu:

#!/usr/bin/env python3

import argparse
from time import sleep

parser = argparse.ArgumentParser(description='Echo a file slowly')
parser.add_argument('-i',
                    '--input-file',
                    type=argparse.FileType('r'),
                    default='-')
parser.add_argument('-d',
                    '--delay-in-ms',
                    type=int,
                    default='100')
args = parser.parse_args()

for line in args.input_file:
    print(line.rstrip())
    sleep(args.delay_in_ms/1000.0)

Il accepte l'entrée de STDIN ou comme argument (-I) et par défaut écrit une ligne par 1/10 de seconde, mais qui peut être modifiée avec un autre argument (-D).

0
Grezzo