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

16 投票
1 回答
2896 浏览
提问于 2025-04-15 16:51

我正在使用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)

撰写回答