2009-06-09 6 views
0

Lorsque je cours un fichier .exe, il imprime des choses à l'écran. Je ne connais pas la ligne spécifique d'où je veux imprimer, mais est-ce qu'il y a un moyen pour que python puisse imprimer la ligne suivante après celle qui dit "Résumé"? Je sais que c'est là quand il imprime et j'ai besoin de l'info juste après. Merci!Python et lignes de lecture

+0

pouvez-vous poster un exemple de code? Je ne sais pas si vous exécutez un EXE à partir de Python ou si vous voulez juste passer une chaîne à un script Python, ou si vous faites quelque chose d'autre. –

+0

Je ne suis pas sûr de voir l'exemple de code, mais quand je suis à l'invite de commande et que je vais dans le répertoire avec le fichier exe et que je le lance, il crache des choses à l'écran. J'ai besoin de savoir comment en python pour imprimer juste la ligne juste après le résumé à l'écran – Tyler

+1

Avez-vous déjà un script Python exécutant le fichier EXE? Vous pouvez récupérer la sortie de STDOUT et la transmettre à la fonction que j'ai affichée ci-dessous. –

Répondre

3

solution Python vraiment simple:

def getSummary(s): 
    return s[s.find('\nSummary'):] 

Cela renvoie tout après la première instance de Résumé
Si vous avez besoin d'être plus précis, je vous recommande des expressions régulières.

2

fait

program.exe | grep -A 1 Summary 

ferait votre travail.

1

Si l'exe s'imprime à l'écran, dirigez cette sortie vers un fichier texte. J'ai pris l'exe est sur les fenêtres, puis de la ligne de commande:

myapp.exe> ​​sortie.txt

Et votre code python raisonnablement robuste serait quelque chose comme:

try: 
    f = open("output.txt", "r") 
    lines = f.readlines() 
    # Using enumerate gives a convenient index. 
    for i, line in enumerate(lines) : 
     if 'Summary' in line : 
      print lines[i+1] 
      break    # exit early 
# Python throws this if 'Summary' was there but nothing is after it. 
except IndexError, e : 
    print "I didn't find a line after the Summary" 
# You could catch other exceptions, as needed. 
finally : 
    f.close() 
Questions connexes