使用DictReader并更改了返回的字典后-为什么我不能再使用更改后的字典来覆盖从中读取的文件?

问题描述

正在进行类似于模拟的银行业务,您可以在其中将假资金从一个帐户转移到另一个帐户。我确认通过在for循环中打印出每一行确实可以更改“钱包”。我的问题是,为什么我无法访问更改后的“钱包”指令以用新数据覆盖文件

我的理解是,“ with”语句中的一个var应该仍然可以在外部访问,只要它仍然在该块的范围之内,并且由于两个“ with”语句都在try块之内,所以我的理解是我应该能够然后访问此“钱包”字典。

from_wallet,to_wallet,金额都是在try块上方从用户输入中捕获的所有变量

try:
    with open('wallets.csv',newline='') as csvfile:
        wallets = csv.DictReader(csvfile)
        for row in wallets:
            if row['wallet_id'] == from_wallet:
                row['balance'] = str(int(row['balance']) - amount)
            if row['wallet_id'] == to_wallet:
                row['balance'] = str(int(row['balance']) + amount)

    with open('wallets.csv','w',newline='') as csvfile:
        fieldnames = ['wallet_id','balance']
        writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
        writer.writeheader()
        for row in wallets:
            writer.writerow({'wallet_id': row['wallet_id'],'balance': row['balance']})
    print('Success')

except IOError:
    print('Unable to open the wallets file. Please try again later.')
finally:
    input('Press any Enter to return to the main menu')
    main()

我很高兴能找到任何方向,我通常可以自己解决这些问题,但是3个小时后我正在寻求帮助,这样我就可以超越我认为将在这个小应用程序中轻松解决的部分。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)