2010-11-05 9 views
1

Je dispose d'un fichier CSV avec un groupe sur IP dans un il:Modifier un fichier csv en Python

192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,192.168.0.5,192.168.0.6,192.168.0.7,192.168.0.8,192.168.0.9,192.168.0.10 

Et je voudrais ajouter une nouvelle adresse IP à la fin de ce fichier csv. Actuellement, je suis en utilisant ce code pour lire les données:

requests = csv.reader(open("file.csv", "rb")) 
for request in requests: 
    for ip in request: 
     print "In List: " + str(ip) 

Ce imprimera:

In List: 192.168.0.1 
In List: 192.168.0.2 
In List: 192.168.0.3 
In List: 192.168.0.4 
In List: 192.168.0.5 
... 

Et puis d'écrire un à la fin, je l'ai essayé plusieurs méthodes, y compris ceci:

requestWriter = csv.writer(open("file.csv", "w")) 
requestWriter.writerow(["192.168.0.X"]) 

Ceci cependant remplace le fichier entier par la nouvelle entrée. J'ai ensuite essayé de faire défiler les enregistrements existants et de les ajouter au nouveau fichier, mais ce partage de la propriété intellectuelle par leur. Est-ce que j'ai râté quelque chose? Sûrement il y a une option de modification pour le lecteur/écrivain csv?

Merci

+1

Vous ne développez pas Windows, n'est-ce pas? Parce que "rb" signifie read + binary et csv n'est généralement pas binaire. Cela fonctionne probablement parce que vous développez sur un système qui ne fait pas la différence entre les fichiers binaires et les fichiers texte (b n'a aucun effet). – systempuntoout

+0

"et csv n'est généralement pas binaire". Puisque pour Windows c'est ** binaire, il est plus simple d'ouvrir CSV avec "wb" pour assurer la compatibilité. –

+0

@ S.Lott euh, csv est binaire dans Windows? – systempuntoout

Répondre

9

Pourquoi ne pas simplement ajouter une nouvelle ligne?

fd = open('file.csv','a') 
fd.write(yourCsvRowWithNewIP) 
fd.close() 
+1

Excellent travail. –

+0

+1, me battre au coup de poing –

+0

Quel est le point en ayant un écrivain csv alors? –