Tüm bir dosyayı belleğe almayı deniyorum (bitiştirilmiş - StringIO kullanarak) - ancak bu nesneler tam olarak görebildiğim kadar gerçek bir dosya gibi davranmıyor - İçeriğin tamamını aldım ya da bir defada bir satır okumak, ama bu desen uygulamak nasıl çalışamaz: sadece bunu bir disk dosyası gibi bir memoryfile iyileştirilmesi için bir yolu var mıCSV okuyucusu bir bellek dosyasını nasıl okuyacaktır?
import csv
with open(#MYMEMORYFILE_HERE#, 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
, bu yüzden daha güzel deyimleri kullanabilirsiniz yukarıda?
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
DÜZENLEME: Bu konuda cevaplar için teşekkürler - Aşağıdaki ben de benimkini ne daralmış düşünüyorum ... ama yine burada bir sorun vardır, değil çıkış bir şey yapmıyor? Kızarma şüphesi var mı?
from csv import reader, writer
import StringIO
memfile=StringIO.StringIO()
spamwriter = writer(memfile)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
spamreader=reader(memfile)
for row in spamreader:
print ', '.join(row)
memfile.close()
DÜZENLEME # 2: Ama bence yanlış ağaca havlıyorum: Bu diskteki versiyonu ya da çalışmak için alamadım ('IOError: okumak için açılamıyor Dosya' - ne zaman Zaten açık olan dosyada okumayı çağırıyorum ...) DÜZENLEME # 3: StringIO'yu (gerçek bir gereklilik yok) terk etti - yanıt olarak kullanılan bölünmüş satırlar.
Kodu ve yorumları burada bırakacağım - yararlı olması durumunda. (bir cul-de-sac olmasına rağmen).
spamreader = csv.reader(MYMEMORYFILE_HERE, delimiter=' ', quotechar='|')
Tüm bu csv.reader()
ihtiyaçlarını bir iterable nesnedir: StringIO
nesnesini açmak için gerek yoktur
Yıllar sonra, sorunuzu güncellediğinizi görüyorum; güncellemeniz başarısız oldu, çünkü * 0'a geri dönmeyi * unuttun. –