我正在处理使用Django的forms.FileField
上传的文件。这将返回InMemoryUploadedFile
类型的对象。
我需要以通用换行模式访问此文件。有关如何在不保存然后重新打开文件的情况下执行此操作的任何想法?
由于
答案 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)