Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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代码正在追加而不是覆盖。如何覆盖?_Python - Fatal编程技术网

我的python代码正在追加而不是覆盖。如何覆盖?

我的python代码正在追加而不是覆盖。如何覆盖?,python,Python,以下是我的python代码:- f= open("Passes.py", "a+") m=open("money.py","r+") passes= {} init={} initial=0 import time print "Welcome to the virtual banking system" time.sleep(0.5) user=raw_input("Would you like to create a new account? 'Y/N'").lower() if user=

以下是我的python代码:-

f= open("Passes.py", "a+")
m=open("money.py","r+")
passes= {}
init={}
initial=0
import time
print "Welcome to the virtual banking system"
time.sleep(0.5)
user=raw_input("Would you like to create a new account? 'Y/N'").lower()
if user== "y":
  new_user= raw_input("Create a username:")
  new_pass= raw_input("Create a password:")
  p= passes[new_user]= new_user + ":" + new_pass
  f.write(str(p+ "\n"))
  ask=raw_input("Would you like to sign into your account? 'Y/N'").lower()
  if ask=="y":
    user_in=raw_input("Enter your username:")
    if user_in==new_user:
      pass_in=raw_input("Enter your password:")
      if pass_in==new_pass:
        print "Welcome to your account" + " " + new_user
        useropt=raw_input("Would you like to view your balance- enter 1, deposit money- enter 2, withdraw money- enter 3 or exit- enter 4:")
        if useropt=="1":
          print "Your balance is:", initial
        if useropt=="2":
          amountdep= int(raw_input("How much money would you like to deposit?:"))
          initial+=amountdep
          print "Thanks. Your new balance is:", initial
        if useropt=="3":
          amountwith=int(raw_input("How much would you like to withdraw?:"))
          initial-=amountwith
          print "Your balance is:", initial
        i=init[new_user]=str(initial)
        m.write(str(i)+"\n")
    else:
      print "Password not valid"

  else:
    print "Username does not exist"
else:
  user2=raw_input("Do you have an existing account? 'Y/N'").lower()
  if user2=="y":
    existing_user=raw_input("Enter your username:")
    exisitng_pass=raw_input("Enter your password:")
    for passwords in f:
      if passwords==existing_user+":"+exisitng_pass:
        print "Welcome to your account" + " " + existing_user
        useropt2=raw_input("Would you like to view your balance- enter 1, deposit money- enter 2, withdraw money- enter 3 or exit- enter 4:")
        if useropt2=="1":
          for info in m:
            print "Your balance is:", info
        if useropt2=="2":
          amountdep= int(raw_input("How much money would you like to deposit?:"))
          for info in m:
            a=int(info)+int(amountdep)
            print "Your new balance is:", int(a)
            m.write(str(a))
        if useropt2=="3":
          amountwith=int(raw_input("How much would you like to withdraw?:"))
          for info in m:
            t=int(info)-int(amountwith)
            print "Your balance is:", t
            m.write(str(t))
在最后两个if语句中,当新金额写入文件(m.write)时,它会附加到文件中,而我希望覆盖它而不是附加它。我该怎么做?我已以“r+”的形式打开该文件

当您使用

for info in m:
Python读取该文件。文件位置位于其读取信息的位置之后,当您使用
m.write()
时,它将写入该位置。如果读取到文件末尾,
m.write()
将附加到文件

实际上,Python规范并没有具体说明
for
如何处理文件对象,因此在循环期间不应该写入同一个文件。它可能会写入文件的末尾,它可能会写入中间。但不管怎样,它都不会回到开头并覆盖文件

您应该做的是从文件中读取余额,关闭文件,添加或减去以获得新的余额,然后再次打开文件以覆盖它

with open("money.py", "r") as m:
    info = int(m.readline().strip())
useropt2=raw_input("Would you like to view your balance- enter 1, deposit money- enter 2, withdraw money- enter 3 or exit- enter 4:")
if useropt2=="1":
    print "Your balance is:", info
if useropt2=="2":
    amountdep= int(raw_input("How much money would you like to deposit?:"))
    a=info+int(amountdep)
    print "Your new balance is:", a
    with open("money.py", "w") as m:
        m.write(str(a))
if useropt2=="3":
    amountwith=int(raw_input("How much would you like to withdraw?:"))
    t=info-int(amountwith)
    print "Your balance is:", t
    with open("money.py", "w") as m:
        m.write(str(t))

相关:为什么要在文件中的每一行加/减存款或取款?如果它只是一个数字,为什么要使用
for
循环来读取它?欢迎使用Stackoverflow!为了最大限度地利用网站,重要的是,包括创建一个示例。