我正在使用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属性的元组对象的错误。如何在读取之前将当前文件传递给此函数?
答案 0 :(得分:1)
file
是FileStorage
,在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)