Python烧瓶写入csv文件并读取它

Python烧瓶写入csv文件并读取它,python,html,forms,csv,flask,Python,Html,Forms,Csv,Flask,我可以读取CSV文件,但不确定如何写入 其想法是允许用户输入他们的评论,并将其保存在CSV文件中,然后进一步打印出评论 这是用于读取csv文件的代码 from flask import Flask, render_template from flask import request import csv def comments(): with open('static\\comments.csv', 'r') as inFile: reader = csv.read

我可以读取CSV文件,但不确定如何写入

其想法是允许用户输入他们的评论,并将其保存在CSV文件中,然后进一步打印出评论

这是用于读取csv文件的代码

from flask import Flask, render_template
from flask import request
import csv

def comments():
    with open('static\\comments.csv', 'r') as inFile: 
        reader = csv.reader(inFile)
        commentsList = [row for row in reader]
下面是我用来显示csv文件中字段的代码。我想使用表单以某种方式将字段添加到给定的csv文件中


{commentsList%中的行的%s}
{第%行中的项目为%1}
{{item}}
{%endfor%}
{%endfor%}
姓名:
评论:
日期:

您只需在csv文件中添加一行即可

只需从POST请求中获取字段并将其附加到文件中

s = ",".join([username, comment, date])

fd = open("path/to/file.csv", "a")
fd.write(s)
fd.close()
a
模式下打开文件会将流定位在文件末尾

s = ",".join([username, comment, date])

fd = open("path/to/file.csv", "a")
fd.write(s)
fd.close()
更新:为您创建了一个示例

from flask import url_for

@app.route("/add-comment/", methods=["POST"])
def add_comment():
    username = request.form["username"]
    comment = request.form["comment"]
    date = request.form["date"]

    f = open('static\\comments.csv', 'a')
    f.write(",".join([username, comment, date])
    f.close()

    return redirect(url_for('comments'))
在模板中,将表单操作设置为正确的URL


我不习惯烧瓶,因此它可能不正确

您只需在csv文件中添加一行即可

只需从POST请求中获取字段并将其附加到文件中

s = ",".join([username, comment, date])

fd = open("path/to/file.csv", "a")
fd.write(s)
fd.close()
a
模式下打开文件会将流定位在文件末尾

s = ",".join([username, comment, date])

fd = open("path/to/file.csv", "a")
fd.write(s)
fd.close()
更新:为您创建了一个示例

from flask import url_for

@app.route("/add-comment/", methods=["POST"])
def add_comment():
    username = request.form["username"]
    comment = request.form["comment"]
    date = request.form["date"]

    f = open('static\\comments.csv', 'a')
    f.write(",".join([username, comment, date])
    f.close()

    return redirect(url_for('comments'))
在模板中,将表单操作设置为正确的URL


我不习惯烧瓶,所以可能不正确

这里有一个简便的解决方案:

>>> import pyexcel as pe
>>> a=[["someone", "good one", "01/Dec/14"]]
>>> sheet = pe.Sheet(a)
>>> sheet
Sheet Name: pyexcel
+---------+----------+-----------+
| someone | good one | 01/Dec/14 |
+---------+----------+-----------+
>>> sheet.colnames=["username", "comment", "date"]
>>> sheet
Sheet Name: pyexcel
+----------+----------+-----------+
| username | comment  |   date    |
+==========+==========+===========+
| someone  | good one | 01/Dec/14 |
+----------+----------+-----------+
>>> sheet.save_as("comments.csv")
>>> exit()

$ cat comments.csv
username,comment,date
someone,good one,01/Dec/14
如果需要从文件中读取csv文件:

>>> import pyexcel as pe
>>> sheet = pe.load("comments.csv", name_columns_by_row=0)
>>> sheet
Sheet Name: csv
+----------+----------+-----------+
| username | comment  |   date    |
+==========+==========+===========+
| someone  | good one | 01/Dec/14 |
+----------+----------+-----------+
这里有一个例子


2015年2月25日的更新:您也可以看看我的插件:

这里有一个方便的解决方案:

>>> import pyexcel as pe
>>> a=[["someone", "good one", "01/Dec/14"]]
>>> sheet = pe.Sheet(a)
>>> sheet
Sheet Name: pyexcel
+---------+----------+-----------+
| someone | good one | 01/Dec/14 |
+---------+----------+-----------+
>>> sheet.colnames=["username", "comment", "date"]
>>> sheet
Sheet Name: pyexcel
+----------+----------+-----------+
| username | comment  |   date    |
+==========+==========+===========+
| someone  | good one | 01/Dec/14 |
+----------+----------+-----------+
>>> sheet.save_as("comments.csv")
>>> exit()

$ cat comments.csv
username,comment,date
someone,good one,01/Dec/14
如果需要从文件中读取csv文件:

>>> import pyexcel as pe
>>> sheet = pe.load("comments.csv", name_columns_by_row=0)
>>> sheet
Sheet Name: csv
+----------+----------+-----------+
| username | comment  |   date    |
+==========+==========+===========+
| someone  | good one | 01/Dec/14 |
+----------+----------+-----------+
这里有一个例子


2015年2月25日的更新:你也可以看看我的插件:

@lukegarigan你设置了一些路由吗?您能在问题中显示更多代码吗?您知道如何处理Flask中的POST请求吗?@Lukegarigan我添加了一些代码,向您展示如何执行一些基本路由。@Lukegarigan您设置了一些路由吗?您能在问题中显示更多代码吗?你知道如何在Flask中处理POST请求吗?@Lukegarigan我添加了更多的代码,向你展示如何进行一些基本的路由。