2009-01-29 6 views
2

Comment imprimer le code suivant dans un fichier txtSortir vers un fichier texte

y = '10.1.1.' # /24 network, 
for x in range(255): 
    x += 1 
    print y + str(x) # not happy that it's in string, but how to print it into a.txt 

Il y a copier coller, mais préférerait essayer quelque chose de plus intéressant.

+0

Vous réalisez que votre x = 1 ne fait rien? –

+0

oui, juste à la hâte de poser une première question, même si une mauvaise – Sander

Répondre

6
f = open('myfile.txt', 'w') 
for x in range(255): 
    ip = "10.1.1.%s\n" % str(x) 
    f.write(ip) 
f.close() 
+0

Cela ne donnera pas le résultat requis: write() n'ajoute pas de nouvelles lignes, de sorte que vous vous retrouvez avec une seule ligne de sortie. – mhawke

+0

@mhawke: Il y a un caractère de nouvelle ligne dans IP, cependant. –

+0

@Fred: oui, vous avez raison. Désolé pour ça. De toute façon, il y a * un * problème avec la plage (255) étant zéro. – mhawke

3

scriptname.py >> sortie.txt

+0

Je pense que c'est la solution la plus flexible. –

1

Quel est le x += 1 pour? Il semble être une solution de contournement pour range(255) étant 0 basé - ce qui donne la séquence 0,1,2 ... 254.

range(1,256) mieux vous donnera ce que vous voulez.

Une alternative à d'autres réponses:

NETWORK = '10.1.1' 
f = open('outfile.txt', 'w') 
try: 
    for machine in range(1,256): 
     print >> f, "%s.%s" % (NETWORK, machine) 
finally: 
    f.close() 
0

En Python 3, vous pouvez utiliser l'argument de mot-clé de la fonction d'impression fichier appelé. "a" signifie "append".

f = open("network.txt", "a") 
for i in range(1, 256): 
    print("10.1.1." + str(i), file=f) 
f.close() 
Questions connexes