如何在通用换行模式下访问上传的文件?
我正在使用Django的forms.FileField
上传一个文件。这个操作会返回一个叫InMemoryUploadedFile
的对象。
我需要以通用换行符模式来访问这个文件。有没有办法在不保存文件然后再重新打开的情况下做到这一点呢?
谢谢!
1 个回答
18
如果你使用的是Python 2.6或更高版本,你可以在把文件内容读入内存后,使用io.StringIO
这个类。举个例子:
>>> 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)