在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也可以完成相同的任务,我已经更新了工作代码。