0

私は tornado Web フレームワークの初心者です。現在、csv ファイルを読み込んで処理するWeb アプリケーションを構築しています。Pythonでcsvモジュールを使用してみましたが、役に立たない表形式モジュールも試しました。

それで、私の質問は、ファイルに対してさまざまな操作を実行できるように、csvファイルデータを読み取り、それを変数の種類に保存するパッケージまたはオープンソースライブラリはありますか?

次のエラーが表示されます。

raise ValueError, "Need formats argument"

私のコードは次のとおりです。

import re
import sys
import os.path
import tornado.httpserver
import webbrowser
import personalfile
import tabular as tb
import csv

try:
    import tornado.ioloop
    import tornado.web
except:
    print 'No tornado module installed, Please install the tornado from http://www.tornadoweb.org/'
    sys.exit()

SRC = os.path.dirname(__file__)

# Main Handler
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("static/template_upload.html")



class OutputHandler(tornado.web.RequestHandler):
    def post(self):
        template_file = self.get_argument('template_html', None)
        **data_file = self.get_argument('csvfile', None)
        data_file = csv.DictReader(data_file)**
        data_file = tb.tabarray(data_file, verbosity=0, headerlines=1)
        xhtmlOutput = personalfile.function([templatehtmlfile,data_file])

        self.render('output.xhtml', data = xhtmlOutput)


application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/output", OutputHandler)
], debug=True,
   static_path=os.path.join(SRC, "static")
)



if __name__ == "__main__":
    print open(os.path.join(SRC, 'static', 'intro.txt')).read()
    webbrowser.open('http://127.0.0.1:8888')

    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
4

2 に答える 2

5

それはcsv.DictReaderオブジェクトがどのように機能するかではありません[module docs]。リーダーを作成しただけで、実際にデータを抽出したわけではありません。すべてのデータを保存したい場合は、実際に読み取る必要があります。例えば:

>>> import csv
>>> with open("test.csv") as fp:
...     reader = csv.reader(fp)
...     data = list(reader)
... 
>>> data
[['a', 'b', 'c'], ['1', '2', '3'], ['4', '5', '6']]
>>> 
>>> with open("test.csv") as fp:
...     reader = csv.DictReader(fp)
...     data = list(reader)
... 
>>> data
[{'a': '1', 'c': '3', 'b': '2'}, {'a': '4', 'c': '6', 'b': '5'}]

など。一度にすべてのデータが実際に必要かどうかは、コードによって異なります。

于 2012-08-28T04:38:43.913 に答える
0

私のコードに間違いがあります。アップロードしたファイルは、self.request.files

参照: http: //www.tornadoweb.org/documentation/overview.html

于 2012-08-28T11:00:36.657 に答える