如何以通用换行模式访问上传的文件?

时间:2009-12-09 18:45:08

标签: python django django-forms

我正在处理使用Django的forms.FileField上传的文件。这将返回InMemoryUploadedFile类型的对象。

我需要以通用换行模式访问此文件。有关如何在不保存然后重新打开文件的情况下执行此操作的任何想法?

由于

1 个答案:

答案 0 :(得分:14)

如果您使用的是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)