在Python中读取、写入和追加文本文件。IOError:[Errno 0]错误

在Python中读取、写入和追加文本文件。IOError:[Errno 0]错误,python,append,bank,Python,Append,Bank,我正在尝试为一个学校项目制作一个小的银行软件程序,并且已经为此奋斗了一段时间。我正在使用python 现在,这个程序要做的是能够向名为accounts的文本文件中添加名称,然后能够通过键入帐户的确切名称来访问这些银行帐户,这很好。问题是,我只能在文件为空并且通过相同的程序运行时添加帐户 当我试图停止程序,然后重新启动程序并向文件中添加更多帐户时,它会要求输入名称和帐户类型,这是应该的,但随后崩溃,在第16行显示错误 f、 写入(accName+“\n”) 它显示的错误是 IOError:[Err

我正在尝试为一个学校项目制作一个小的银行软件程序,并且已经为此奋斗了一段时间。我正在使用python

现在,这个程序要做的是能够向名为accounts的文本文件中添加名称,然后能够通过键入帐户的确切名称来访问这些银行帐户,这很好。问题是,我只能在文件为空并且通过相同的程序运行时添加帐户

当我试图停止程序,然后重新启动程序并向文件中添加更多帐户时,它会要求输入名称和帐户类型,这是应该的,但随后崩溃,在第16行显示错误

f、 写入(accName+“\n”)

它显示的错误是

IOError:[Errno 0]错误

如何使用户能够在首次运行和创建文本文件后添加帐户,而无需删除此行

searchFile=f.read().splitlines()

这是我的全部计划

again = "y"
f = open('accounts.txt', 'a+') #Opens the file in a+ mode
searchFile = f.read().splitlines() #Need this to be able to look through the file and write back a certain line, and the next two lines
accessedAccount = []

choice = raw_input("What would you like to do? (add/remove a bank account, access a bank account): ")

if choice == "a":
    while again == "y":
        accName = raw_input("Account owner's name: ")
        accType = raw_input("Account type: ")
        accBal = "0"

        f.write(accName + "\n")
        f.write(accType + "\n")
        f.write(accBal)
        f.write("\n")

        again = raw_input("Add another account?: ")

if choice == "a2":
    account = raw_input("What is the name of the account you wish to access?: ")
    for i, line in enumerate(f):
        if account in line:
            for j in f[i:i+3]:
                print j
                accessedAccount.append(j)

    balance = accessedAccount[2]
    intBalance = int(balance)
    print accessedAccount

    choice2 = raw_input("This is your bank account. What would you like to do now? (Withdraw/deposit, exit): ")
    if choice2 == "d":
        amount = int(raw_input("How much money would you like to deposit? Current balance: %i : " %intBalance))
        newBalance = intBalance + amount
        print "Current balance: %i" %newBalance
        for i, line in enumerate(searchFile):
            if balance in line:
                newBalance = str(newBalance)
                line.replace(balance, newBalance)
                print "test"

f.close

一、 首先,我们需要更多的信息。我在多次运行中添加信息时没有遇到任何问题,甚至后来尝试访问它(由于缺少平衡信息,它还不起作用,但这是后来的问题)。我看到的唯一问题是您缺少f.close()上的括号,但这并没有影响在我的环境下的运行,因为所有打开的文件在程序退出时都已正确清理。@Prune谢谢您的响应。我只是试着在f.close上加上括号,但没用,哎呀。至于更多信息,基本上,当我在删除帐户文件后运行该程序时,它必须重新创建它,该程序运行正常,只要我使用重新启动标志,我就可以添加我想要的所有帐户,但当我点击停止或结束该程序,然后尝试再次运行它并添加更多帐户时,它会给我IOError:[Errno 0]错误。希望这能有所帮助,但不确定发生这种情况的确切原因。请提供一些跟踪信息。例如,我将print searchFile放在splitlines使用之后,并从以前的输入中获得了预期的输出:['Able','elite','0','Baker','pica','0','Charlie','saving','0','Delta','dawn','0']检查,添加
f.seek(os.seek\u END)
阅读后不久应该可以解决问题,以防您使用Windows。@Prune抱歉,我不确定跟踪信息是什么,因为我对所有这些都还很陌生。然而,我在同一位置将print searchFile添加到了我的代码中,它也提供了所需的结果,但是当我尝试向文本文件添加更多帐户时,它会在输入名称和帐户类型后给我IOError。例如,我需要更多信息。我在多次运行中添加信息时没有遇到任何问题,甚至后来尝试访问它(由于缺少平衡信息,它还不起作用,但这是后来的问题)。我看到的唯一问题是您缺少f.close()上的括号,但这并没有影响在我的环境下的运行,因为所有打开的文件在程序退出时都已正确清理。@Prune谢谢您的响应。我只是试着在f.close上加上括号,但没用,哎呀。至于更多信息,基本上,当我在删除帐户文件后运行该程序时,它必须重新创建它,该程序运行正常,只要我使用重新启动标志,我就可以添加我想要的所有帐户,但当我点击停止或结束该程序,然后尝试再次运行它并添加更多帐户时,它会给我IOError:[Errno 0]错误。希望这能有所帮助,但不确定发生这种情况的确切原因。请提供一些跟踪信息。例如,我将print searchFile放在splitlines使用之后,并从以前的输入中获得了预期的输出:['Able','elite','0','Baker','pica','0','Charlie','saving','0','Delta','dawn','0']检查,添加
f.seek(os.seek\u END)
阅读后不久应该可以解决问题,以防您使用Windows。@Prune抱歉,我不确定跟踪信息是什么,因为我对所有这些都还很陌生。然而,我在同一个位置将print searchFile添加到了我的代码中,它也提供了所需的结果,然而,当我尝试向文本文件添加更多帐户时,在输入名称和帐户类型后会出现IOError