Przesyłam plik csv/tsv z formularza w GAE i próbuję przeanalizować plik za pomocą modułu pythona csv.Prześlij i przeanalizuj plik CSV za pomocą "uniwersalnej linii nowej" w pythonie w Google App Engine
Podobnie jak w przypadku opisu here, przesłane pliki w GAE są ciągami.
więc traktować mnie plik String obiekt plikopodobny:
file = self.request.get('catalog')
catalog = csv.reader(StringIO.StringIO(file),dialect=csv.excel_tab)
Ale nowe linie w moich plikach niekoniecznie „\ n” (dzięki excel ..), a generowany błąd:
Błąd: znak nowego wiersza widziany w niecytowanym polu - czy musisz otworzyć plik w trybie uniwersalnej-nowej linii?
Czy ktoś wie, jak używać StringIO.StringIO do traktowania ciągów takich jak pliki otwarte w uniwersalnej linii?
Zgodnie z docs Pythona, tryb domyślny StringIO jest uniwersalny znak nowej linii. Coś dziwnego może się dziać w twoim pliku danych. – Calvin
@Calvin _ "Zgodnie z dokumentami Pythona, domyślnym trybem StringIO jest uniwersalny znak nowej linii" _ Nie znalazłem miejsca, w którym mówią o tym doktorzy, mogliby go pokazać? – eyquem
@eyquem Minęło 2,5 roku, więc dokumenty mogły się zmienić, ale http://docs.python.org/3.3/library/io.html?highlight=stringio#io.StringIO mówi: "Argument nowej linii działa tak, jak w TextIOWrapper "i TextIOWrapper mówi" jeśli nowa linia jest Brak, włączony jest tryb uniwersalnych linii nowych. " Ale wtedy StringIO może zaprzeczyć temu, mówiąc "Domyślnie nie wykonujemy tłumaczenia nowej linii". – Calvin