我正在尝试使用以下代码同时附加和覆盖:
with open("file.txt",'r') as f:
data=f.readlines()
user_amount = data[2].rstrip()
def deposit(event):
if event >= 0:
user_amount += event
with open("file.txt", 'a') as a:
a.writelines(event)
def save():
with open("file.txt",'w') as f:
for i,line in enumerate(data,1):
if i == 3:
f.writelines(user_amount)
else:
f.writelines(line)
该文件由以下几行组成:
first line
second line
user_amount
fourth line
所以,基本上我想做的是:我有一个名为“Deposit”的按钮,当我按下它时,调用函数 deposit() 从条目中获取值并保存在变量 user_amount 中。例如,如果我将 10 放入 Entry 并按下按钮存入 user_amount sum 10 并且该值显示在标签中。到目前为止还好,每次我按下按钮存款时,这些值都会附加到文件中。但是,还有另一个名为 log_out 的按钮,我需要按下并调用函数 save() 以在索引 2 处保存“新金额”!工作正常,我的文件中的索引 2 更新为新数量,但我的问题是所有附加都消失了。更清楚的是,我需要在文件末尾附加条目输入的所有值,当我按下按钮 log_out 时,我需要保存新金额并保留所有追加内容。第一、二、四行我不能修改。输出应该是:
first_line
second_line
user_amount (new_amount)
fourth_line
Deposit
100.0
Deposit
50.0
Deposit
200.0... line by line ( will show all deposits made)
编辑:如果 event 是整数,我的代码可能无法正常工作,但是您显示的代码不会产生您显示的输出,特别是您没有显示任何在输出中添加“存款”行的内容表演。这就是为什么 StackOverflow 要求您在需要代码帮助时显示最小完整可验证示例https://stackoverflow.com/help/mcve。
问题(我认为)是您将原始文件的副本保存在变量中data
,并且在调用存款函数时没有更新它,因此当您调用保存函数(重写整个文件)时,内容变量data
被写出,因此存款丢失
您可以通过像这样(未经测试)更新存款功能中的数据来修复它(我假设event
是一个列表):
def deposit(event):
if event >= 0:
user_amount += event
with open("file.txt", 'a') as a:
a.writelines(event)
data.extend(event)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句