2010-03-28 3 views
1

J'ai beaucoup de scripts Perl qui ressemblent à ceci. Ce qu'il fait, c'est qu'il ouvrira automatiquement tout fichier donné en argument de ligne de commande et, dans ce cas, affichera le contenu de ce fichier. Si aucun fichier n'est donné, il sera lu à partir de l'entrée standard.Ouvrir automatiquement les fichiers donnés comme arguments de ligne de commande en Python

while (<>) { 
    print $_; 
} 

Y at-il un moyen de faire quelque chose de similaire en Python sans avoir à ouvrir explicitement chaque fichier?

Répondre

10

Le module fileinput dans la bibliothèque standard de Python est conçu exactement à cet effet, et je cite un peu de code à partir de l'URL que je viens de donner:

import fileinput 
for line in fileinput.input(): 
    process(line) 

Utilisation print au lieu de process et vous avez exactement équivalent de votre code Perl.

+0

Le manuel de référence de la bibliothèque a été ma lecture sanglante de chevet pendant quelques semaines maintenant. C'est tellement injuste que vous ayez des années d'expérience en Python. o.O (mais j'apprécie les réponses, néanmoins) – msw

+0

@msw Cela ne prend pas réellement des années. Si vous le survolez assez souvent, vous aurez une idée de ce qui est déjà là pour vous et de ce qui ne l'est pas, même si vous n'avez pas utilisé les modules appropriés. Il y a toujours des surprises, bien sûr (robotparser? Yikes!). Je pense que cela prend des années à le faire accidentellement, si quelque chose. ;) –

+2

@msw, je suis d'accord avec David - j'ai découvert Python en décembre 1999, et moins d'un an plus tard, Steve Holden m'avait déjà surnommé "le martellibot" pour mes copieuses réponses sur comp.lang.python ;-). –

Questions connexes