Python - 如何打开尚未写入磁盘的文件?

时间:2014-02-26 23:28:54

标签: python file-io flask

我正在使用script 从Python中上传的JPG中删除exif数据,然后再将它们写入磁盘。我正在使用Flask,文件是通过请求引入的

file = request.files['file']

去除exif数据,然后保存它

f = open(file) 
image = f.read()
f.close()
outputimage = stripExif(image)
f = ('output.jpg', 'w')
f.write(outputimage)
f.close()
f.save(os.path.join(app.config['IMAGE_FOLDER'], filename))

Open不起作用,因为它只接受一个字符串作为参数,如果我尝试设置f=file,它会抛出一个关于没有write属性的元组对象的错误。如何在读取之前将当前文件传递给此函数?

3 个答案:

答案 0 :(得分:1)

fileFileStorage,在http://werkzeug.pocoo.org/docs/datastructures/#werkzeug.datastructures.FileStorage

中有描述

正如文档所说,stream表示此文件的数据流,通常采用指向临时文件的指针的形式,并且大多数函数都是代理的。

您可能会执行以下操作:

file = request.files['file']
image = file.read()
outputimage = stripExif(image)
f = open(os.path.join(app.config['IMAGE_FOLDER'], 'output.jpg'), 'w')
f.write(outputimage)
f.close()

答案 1 :(得分:0)

试试io包,它有一个BufferedReader(),ala:

import io

f = io.BufferedReader(request.files['file'])
...

答案 2 :(得分:0)

file = request.files['file']
image = stripExif(file.read())
file.close()
filename = 'whatever' # maybe you want to use request.files['file'].filename
dest_path = os.path.join(app.config['IMAGE_FOLDER'], filename)
with open(dest_path, 'wb') as f:
    f.write(image)