Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将元素追加到pickle列表_Python_Pickle - Fatal编程技术网

在python中将元素追加到pickle列表

在python中将元素追加到pickle列表,python,pickle,Python,Pickle,我已经用下面的代码编写了这段代码 我想将stockname附加到文件中。 打印数据时只打印一个元素。 所有以前的元素都消失了 如何解决这个问题 import pickle filename = 'blocklist2.pkl' data = [] with open(filename, 'rb') as rfp: data = pickle.load(rfp) data.append(stock_name) with open

我已经用下面的代码编写了这段代码

我想将
stockname
附加到文件中。 打印
数据时
只打印一个元素。 所有以前的元素都消失了

如何解决这个问题

    import pickle
    filename = 'blocklist2.pkl'
    data = []

    with open(filename, 'rb') as rfp:
        data = pickle.load(rfp)

    data.append(stock_name)

    with open(filename, 'wb') as wfp:
        pickle.dump(data, wfp)

    with open(filename, 'rb') as rfp:
        data = pickle.load(rfp)

    print(data)
更新

使用csv模块代替pickle

@app.route('/', methods=["GET", "POST"])
def home():
    if request.method == "POST":
        stockname = request.form.get("stockname")

        data = [stockname]
        lis = []
        lis.append(data)
        #append data
        file = open('blocklist.csv', 'a+', newline='')
        with file:
            write = csv.writer(file)
            write.writerows(lis)

        lis_to_render = []
        with open('blocklist.csv', 'r') as csv_file: 
            csv_reader = csv.reader(csv_file)
            for line in csv_reader:  
                lis_to_render.append(line[0])

        return render_template('index.html',lis = lis_to_render)       


    lis_to_render = []
    with open('blocklist.csv', 'r') as csv_file:
        csv_reader = csv.reader(csv_file)
        for line in csv_reader:
            lis_to_render.append(line[0])

这可能值得一看:@cainns98我想把string
stockname
附加到一个列表中,那么在这个代码中,open(filename,'a+')作为fp:pickle.dump(p,fp)的“p”应该是什么呢?好的,那么(据我所知,pickle)只有在ab模式下,通过将每个元素以1乘以1的方式添加到pickle文件中,才能真正做到这一点,而不必取消pickle。这让';您可以随时添加,并且仍然可以使用EOF指示器(或列表构建,如果长度已知)读取。第一部分显示在此处:不确定数据消失的原因,但可能是数据被保存为单独的条目,必须一次加载一个条目。有关如何加载到文件为空的示例,请参见此:@cainns98谢谢您的帮助,我意识到使用csv也可以完成相同的任务,我已经更新了工作代码。