【发布时间】:2015-04-03 23:50:27
【问题描述】:
我在 Python3 中使用 Flask 作为网络服务器,并且正在使用 Flask 的上传功能。将文件上传到服务器会生成 werkzeug.datastructures.FileStorage 对象。
我需要这个文件的功能之一,也需要能够从路径对象打开文件,所以目前我使用的是open(file_to_open)。如果可能的话,我想避免将上传的文件写入临时文件,只是为了再次读取它。所以我的问题包括两部分:
1:是否可以将此 FileStorage 对象“翻译”为文件对象?
2:如果是这样,这是否也适用于当前代码 (open(file_to_open))?
【问题讨论】:
-
你真的需要
open(file_to_open)吗?因为FileStorage对象本身提供了文件API,所以直接使用即可。如果您需要再次读取文件,只需致电uploaded_file.seek(0)。 -
我需要一个能够从磁盘、使用路径以及从内存对象读取文件的函数。如果这意味着替换
open(file_to_open),那很好,只要函数readfile(file)可以将文件作为路径并且文件/任何东西FileStorage可以转换为 -
为什么不是一个只从文件对象中读取的函数呢?然后你可以给它一个
FileStorage对象(readfile(uploaded_file))它会工作。如果您需要将该函数用于磁盘上的文件,请使用readfile(open(filename))调用它。函数根据其类型用两种方式解释一个参数(所以readfile(filename)和readfile(open(filename))具有相同的效果)设计得不是很好。
标签: python file python-3.x memory flask