2009-12-09 4 views

Odpowiedz

14

Jeśli używasz Pythona 2.6 lub wyższy, można użyć klasy io.StringIO po przeczytaniu pliku do pamięci (przy użyciu metody read()). Przykład:

>>> import io 
>>> s = u"a\r\nb\nc\rd" 
>>> sio = io.StringIO(s, newline=None) 
>>> sio.readlines() 
[u'a\n', u'b\n', u'c\n', u'd'] 

Aby właściwie wykorzystać te informacje w widoku django, może trzeba konwertować dane pliku wejściowego do unicode:

stream = io.StringIO(unicode(request.FILES['foo'].read()), newline=None) 
+0

to działa świetnie. Używam go wraz z csv.DictReader w moim widoku django. 'reader = csv.DictReader (stream)' then 'dla wiersza w czytniku: #import dla każdego wiersza' Jakieś przemyślenia na temat tego, co to zrobi przy użyciu pamięci? Jestem w "budżecie" :) Wiem, że powinienem po prostu zapisać plik w tymczasowej lokalizacji, ale jestem ciekawy, czy na razie muszę zrobić jakieś śmieciowe czyszczenie? – teewuane

Powiązane problemy