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

Zac*_*ach 15 python django django-forms

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

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

谢谢

Ant*_* P. 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']
Run Code Online (Sandbox Code Playgroud)

要在django视图中实际使用它,您可能需要将输入文件数据转换为unicode:

stream = io.StringIO(unicode(request.FILES['foo'].read()), newline=None)
Run Code Online (Sandbox Code Playgroud)