在Flask中实时文件解析
我最近收到了一些建议,关于一个简单项目中使用哪个易于上手的网页框架来帮助我的朋友,大家推荐我用 Flask。
到目前为止,一切都很顺利。不过,我现在想弄明白怎么实时读取一个文件,并把文件的内容传递给我写的一个函数。
比如,我想用类似下面的方式:
HTML 部分:
<form action="process_file" method=post enctype=multipart/form-data>
<input type='file' name='file'>
<input type='submit' value="Upload and Process Selected File">
</form>
我觉得在实际的网页上只需要这些内容,因为这样可以让我获取到需要的文件路径,希望我能顺利读取这个文件。
我不太确定在 Flask/Python 这边该怎么做——我只是想找个方向,或许可以从文件中读取两个数字或字母,然后在同一页面上显示出来?
Flask/Python 部分:
@app.route('/process_file', methods=['GET', 'POST'])
def process_file():
if request.method == 'POST':
file = request.files.get('file')
if file:
"Read file and parse the values into an array?"
"Pass arguments to a Processing function and outputs result into x)"
return render_template('index.html',answer = x)
else:
return render_template('index.html',error=1)
我不太确定自己是不是在正确的方向上——我只是觉得有经验的人能给我一些指导。
补充:我还注意到 Flask 和 jQuery 似乎配合得很好,使用它们组合在一起会不会让处理和解析文件变得更简单呢?
谢谢大家。
2 个回答
我猜你写的代码在Flask这个框架下是没问题的。我猜那个文件是一个Python的类文件对象。关于这个的文档里有你需要知道的所有关于读写文件的信息。
至于解析文件,这就要看文件的格式了。我建议你先写一些代码,按照你预期的格式读取文件,并确保你的解析过程是稳固的。然后再把这个过程整合到你的process_file函数里。
至于jQuery,它是一个JavaScript库。只要Flask能够使用HTTP,它就不在乎Flask是什么。如果你打算用它来做Ajax请求的话。不过,这并不会让文件解析变得简单。
Flask网站上的文档(http://flask.pocoo.org/docs/patterns/fileuploads/)展示了如何正确和安全地处理文件上传,我建议你从那里开始。如果你想在保存文件之前或者不保存文件的情况下解析它,你可以使用通过request.files获取的FileStorage对象上的stream属性。