2010-03-01 2 views

Répondre

0

« construction Unifying » sonne comme vous voulez être en mesure d'accéder soit un fichier fourni comme argument ou sys.stdin à travers une variable, de sorte que vous pouvez simplement dire des fonctions pour obtenir une ligne de cette chose. Heureusement, sys.stdin est juste un autre objet fichier, vous avez donc exactement les mêmes fonctionnalités à la fois et il est aussi facile que d'essayer/except:

 
try: 
    from sys import argv 
    file1 = open(argv[1]) 
except: 
    from sys import stdin 
    file1 = stdin 

Vous obtiendrez sys.stdin si argv [1] est hors de portée (IndexError) ou ne peut pas être ouvert (IOError).

Si vous voulez juste concaténer les deux, utilisez file1 = sys.argv[1].open().read() + sys.stdin.read()

6
import fileinput 
for line in fileinput.input(): 
    print line 
+0

'Ce itère sur les lignes de tous les fichiers répertoriés dans sys.argv [1:], par défaut sys.stdin si la liste est vide. Si un nom de fichier est '-', il est également remplacé par sys.stdin.' - http://docs.python.org/2/library/fileinput.html – n611x007

Questions connexes