2010-11-16 10 views
2

Je n'utilise pas Python très souvent, mais je développe parfois des outils simples pour faciliter ma vie. Mon plus fréquemment utilisé est un vérificateur de journaux/débogueur brut pour SAS. Il lit la ligne de journal SAS en vérifiant les lignes de toutes les erreurs dans ma liste et il renvoie tout ce qu'il trouve dans la sortie standard (j'exécute Python 2.6 dans un environnement RedHat Linux) - avec l'erreur, il imprime le numéro de ligne de cette erreur (pas que ce soit super utile). Ce que je voudrais vraiment faire est d'alimenter le script d'un numéro de ligne et d'ouvrir le journal SAS lui-même dans GVIM et de l'afficher par défilement jusqu'au numéro de ligne que j'ai spécifié. Je n'ai pas eu de chance de trouver un moyen de faire cela - j'ai regardé assez à fond sur Google en vain. Toutes les idées seraient grandement appréciées. Merci! JeremyPython: ouvrir et afficher un fichier texte sur une ligne spécifique

Répondre

3

Une fois que vous avez le numéro de ligne, vous pouvez exécuter gvim filename -c 12 et il ira à la ligne 12 (ce qui est dû au fait -c <command> est « Execute <commande> après le chargement du premier fichier », donc -c 12 est juste dire courir :12 après avoir chargé le fichier). Donc, je ne suis pas sûr si vous avez vraiment besoin de Python du tout dans ce cas; Il suffit d'envoyer directement le numéro de ligne à gvim.

+1

peut aussi être écrit comme 'vim [nom de fichier] + 12' –

+0

@ trop de php: merci, je ne savais pas que –

+0

@ trop de php: +1, vi fait tout :) – g19fanatic

1

En fonction de la fréquence d'inspection de ces journaux et de leur niveau de bruit, il peut être utile de créer un errorformat afin d'utiliser la liste de raccourcis de Vim pour passer rapidement d'une erreur à l'autre.

+0

Absolument. Très bon conseil. –

2

Si vous voulez la ligne 10

>>> f = open('thefile.log') 
>>> lines = f.readlines() 
>>> lines[10] 

Ou tout à la fois

>>> open('thefile.log').readlines()[10] 

Open in gvim

>>> import subprocess 
>>> subprocess.call(['gvim', '-c', '10', 'thefile.log'])