2010-03-02 19 views
89

için yeni satır ekle Yeni csv dosyama yeni bir satır eklemeye çalışıyorum. Temel olarak, Python komut dosyasını her çalıştırdığımda güncellenir.eski csv dosyası python

Şu anda bir listedeki eski csv satır değerlerini saklamak ve daha sonra csv dosyasını silmek ve yeni liste değeriyle yeniden oluşturmak.

Bunu yapmanın daha iyi yolları olduğunu bilmek isterdim. 'a' parametresi olan bir dosyayı açma

cevap

118
fd = open('document.csv','a') 
fd.write(myCsvRow) 
fd.close() 

yerine basitçe mevcut içeriği yazılmadan dosyanın sonuna eklenecek sağlar. Bunu dene.

+1

Denedim fp = open (csv_filepathwithname, 'wa') writer = csv.yazar (fp) somelist = [3,56,3,6,56] writer.writerow ((somelist)) ancak dosyaya yalnızca son satır eklenir. – laspal

8

Dosyayı 'w' yerine 'a' biçiminde açıyor musunuz?

piton docs

7,2 yılında Reading and Writing Files bakınız. Dosyaları Okuma ve Yazma

open() bir dosya nesnesini döndürür ve en yaygın olarak iki bağımsız değişkenle kullanılır: open (dosya adı, mod).

>>> f = open('workfile', 'w') 
>>> print f <open file 'workfile', mode 'w' at 80a0960> 

İlk argüman, dosya adını içeren bir dizedir. İkinci argüman, dosyasının, dosyanın kullanılacağı yolunu açıklayan bir kaç karakter içeren başka bir dizedir. mod sadece dosya için okuduğunda 'r', 'w' yazarken (aynı adla var olan bir dosya silinecektir) ve 'a' eklenmek üzere dosyayı açar; 'a yazılan tüm veriler otomatik olarak sonuna eklenir. 'r +', hem okuma hem de yazma için dosyasını açar. Mod argümanı isteğe bağlıdır; 'r' atlanırsa kabul edilir.

Windows'ta, 'b' moduna eklenen dosya ikili modda açılır, yani da 'rb', 'wb' ve 'r + b' gibi modlar da vardır. Windows Python metin ve ikili dosyalar arasında bir ayrım yapar; Metin dosyalarındaki satır sonu karakterleri, verileri okunduğunda veya yazıldığında otomatik olarak hafifçe değiştirilir. Bu dosya verilerinin arkasındaki değişiklikler, ASCII metin dosyaları için uygundur, ancak JPEG veya EXE dosyalarındaki gibi ikili verileri bozar. 'u okurken ve bu tür dosyaları yazarken ikili modu kullanmamaya çok dikkat edin. Unix'te, moduna bir 'b' eklemeye zarar vermez, böylece tüm ikili dosyaları için bağımsız olarak platformu kullanabilirsiniz.

+0

cevabınızı daha ayrıntılı hale getirebilirdiniz, o zaman gerçek bir cevap gibi görünecekti :-) – user702846

+0

@ user, bir bağlantı ekledim - bu size yardımcı oluyor mu? –

59

Açık dosyayı bırakarak önlemek için standart kütüphaneden csv modülü ve with ifadesini kullanarak bu çözümü tercih ederim.

Anahtar, dosyayı açtığınızda eklemek için 'a' kullanıyor. Windows'ta gereksiz yeni çizgilerle karşılaşabilirsiniz. 'a' yerine 'ab' kullanarak bunlardan kaçınmaya çalışabilirsiniz.