2011-02-09 8 views
3

私は最近、友人を助けてくれる簡単なプロジェクトに使う使いやすいWebフレームワークに関する質問を受けました。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> 

HTMLサイド:

例えば、私は次のようなものを使用したいと思います私が必要とするファイルのパスを得ることができるので、うまくいけば私は前記ファイルを読むことができるだろう。

Flask/Python側のどこに行くのか分かりません - 正しい方向のステップを探しています。おそらく2つの数字や文字を(ファイル内で)読み込んで出力しています同じページですか?

フラスコ/ 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) 

私は、私は正しい方向に向かっていますかはわからない - 私はちょうどフラスコ/ Pythonのとより多くの経験を持った人が私を導くことができると思いました。

編集:また、FlaskがjQueryでうまくいくように見えましたが、それらを組み合わせて使用​​すると処理/ファイル解析が簡単になりましたか?

ありがとうございました。

答えて

10

フラスコサイトのドキュメント(http://flask.pocoo.org/docs/patterns/fileuploads/)は、ファイルのアップロードを適切かつ安全に処理する方法を示しています。そこから始めます。保存する前にファイルを解析する場合は、アクセス権が与えられているFileStorageオブジェクトに対して、request.files経由でstreamプロパティ/属性を使用することができます。

1

私はあなたのコードがフラスコの観点から正しいと仮定しています。私の推測では、そのファイルはPython file-like objectです。このためのドキュメントは、ファイルの読み書きについて知っておく必要があるすべてを示しています。

構文解析が行われる限り、それはフォーマットに依存します。私の提案は、あなたが期待する形式でファイルを読み込んで、あなたの解析ルーチンを堅実にするコードを書くことです。ドロップしてからprocess_file関数に渡します。

jqueryは、javascriptライブラリです。それはフラスコがあなたがajaxのためにそれを使用することを計画している場合、httpを話す限りフラスコが何であるかを気にしません。しかし、ファイルの構文解析はそれほど簡単にはなりません。

+0

ありがとうTom! - 私はファイル入力からファイル(またはファイルパス)を取得した後、配列やその他のものに行単位で読み込みを行う方法を理解しようとしています。あなたが提供したリンクを見てみましょう –

+1

ファイルオブジェクトを1行ずつ探していたら、本当に単純なPythonで: 'file_objectの行:' – Jarek

+0

ちょっと@RionWilliams、私は同じことを思っていました。私はこれがずっと前だと知っていますが、あなたがやったことを覚えていますか?クライアントからアップロードされたファイルも読み込もうとしています。ありがとう! – tmthyjames