Как я могу получить доступ к загруженному файлу в режиме универсальной-новой строки?

Я работаю с файлом, загруженным с помощью Django forms.FileField. Это возвращает объект типа InMemoryUploadedFile.

Мне нужно получить доступ к этому файлу в режиме универсальной-новой строки. Любые идеи о том, как это сделать, не сохраняя и не открывая файл?

Спасибо

Ответы

Ответ 1

Если вы используете Python 2.6 или выше, вы можете использовать класс io.StringIO после чтения вашего файла в памяти (используя метод read()). Пример:

>>> 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']

Чтобы использовать это в своем представлении django, вам может потребоваться преобразовать данные входных файлов в unicode:

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