Python Flask读取CSV生成HTML表格报参数缺失错误如何解决
错误原因
- Flask路由绑定的视图函数默认不会主动传入参数,除非你在
@app.route的路径中定义了路径变量。你当前定义的csvallissues_to_html_table函数要求必填第一个参数mydata,但访问/seeall路由时Flask没有传入该参数,所以触发参数缺失报错。 - 冗余问题:你函数内部已经硬编码了
mydata = "data.csv",函数定义中的mydata参数完全没有被用到,属于无效定义。
修复方案
直接删除函数定义中不需要的mydata参数即可,修改后的代码如下:
@app.route("/seeall") def csvallissues_to_html_table(headers = None, delimiter=","): html_page = get_html("seeall") #call the csv file and read it mydata = "data.csv" with open(mydata) as f: content = f.readlines() #reading file content into list rows = [x.strip() for x in content] table = "<table border =1>" #creating HTML header row from csv file if header is provided if headers is not None: table+= "".join(["<th>"+cell+"</th>" for cell in headers.split(delimiter)]) else: table+= "".join(["<th>"+cell+"</th>" for cell in rows[0].split(delimiter)]) rows=rows[1:] #Converting csv to html row by row for row in rows: table+= "<tr>" + "".join(["<td>"+cell+"</td>" for cell in row.split(delimiter)]) + "</tr>" + "\n" table+="</table><br>" return html_page.replace("$$TABLE2$$", table)
可选优化建议
- 如果后续需要支持读取不同的csv文件,可以把文件名作为路径参数传入,路由修改为
@app.route("/seeall/<filename>"),函数参数保留filename替换原来的mydata参数,内部读取时改为with open(filename) as f即可,访问时通过/seeall/data.csv即可读取对应文件。 - 建议使用Python内置的
csv模块处理csv文件,避免分隔符转义、特殊字符等场景下的解析错误。
内容的提问来源于stack exchange,提问作者mollieda
相关产品推荐
相关产品推荐

