Python 在tornado web框架中读取csv文件
我是tornado web框架的新手。 目前,我正在构建一个web应用程序,应该加载csv文件,然后对其进行处理。我尝试在python中使用csv模块,也尝试了表格模块,但这对我没有帮助 所以,我的问题是,是否有任何包或开源库可以读取csv文件数据并将其存储在某种变量中,以便我可以对该文件执行各种操作 我得到以下错误:Python 在tornado web框架中读取csv文件,python,csv,tornado,Python,Csv,Tornado,我是tornado web框架的新手。 目前,我正在构建一个web应用程序,应该加载csv文件,然后对其进行处理。我尝试在python中使用csv模块,也尝试了表格模块,但这对我没有帮助 所以,我的问题是,是否有任何包或开源库可以读取csv文件数据并将其存储在某种变量中,以便我可以对该文件执行各种操作 我得到以下错误: raise ValueError, "Need formats argument" 我的代码是: import re import sys import os.path imp
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()
这不是
csv.DictReader
对象的工作方式。你只做了阅读器,没有提取任何数据。如果您希望存储所有数据,则必须实际读取数据。例如:
>>> 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'}]
等等。您是否真的一次需要所有数据取决于您的代码。这不是
csv.DictReader
对象的工作方式。你只做了阅读器,没有提取任何数据。如果您希望存储所有数据,则必须实际读取数据。例如:
>>> 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'}]
等等。您是否真的同时需要所有数据取决于您的代码。我的代码中有一个错误。您上传的文件将从
self.request.files
参考资料:我的代码中有一个错误。您上传的文件将从
self.request.files
参考资料:内置的
csv
模块没有任何错误。你有什么问题?是否抛出错误?csv文件的格式是什么?它位于何处?你忘了提到你正在做的事情是如何失败的。@Ignacio Vazquez Abrams抱歉。我添加了我得到的错误。@jozzas我的问题不是csv文件的格式。如果您需要csv文件的示例,请假设csv有两列,其中一列是学生的姓名,另一列是学生在数学科目中的分数。内置的csv
模块没有任何错误。你有什么问题?是否抛出错误?csv文件的格式是什么?它位于何处?你忘了提到你正在做的事情是如何失败的。@Ignacio Vazquez Abrams抱歉。我添加了我得到的错误。@jozzas我的问题不是csv文件的格式。如果您需要csv文件的示例,请假设csv有两列,其中一列是学生的姓名,一列是学生在数学科目中的分数。