2017-01-27 57 views
1

Я хотел бы знать, как я мог бы сделать свой код добавлением каждого ввода в новую строку в файле, но не добавлять лишнюю пустую строку. В настоящее время я использую «\ n» для записи добавления каждого ввода в новую строку, но это добавляет дополнительную пустую строку. Есть ли способ сделать это без добавления дополнительной строки?Как написать ввод на новые строки в файлах в python, не добавляя пустую строку?

Вот весь мой код: -

f= open("Passes.py", "a+") 
m=open("money.py","r+") 
passes= {} 
init={} 
initial=0 
import time 
print "Welcome to the virtual banking system" 
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("\n"+p) 
    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: 
    print "Thanks for using the virtual bank." 

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 "Thanks. Your balance is:", int(a) 
      m.close() 
      m= open("money.py", "w") 
      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 "Thanks. Your balance is:", t 
      m.close() 
      m=open("money.py","w") 
      m.write(str(t)) 
+1

Если вы используете 'print', он автоматически добавляет новый символ строки, поэтому не указывайте' '\ n" 'в том, что вы печатаете. Отправьте примерный код, если это не решит ваш вопрос. –

+0

Я не использовал печать, но я просто пишу в файл –

+0

f.write (p + "\ n") –

ответ

0

Я считаю, что все, что вам нужно сделать, это вместо:

m.write(str(i)+"\n") 

Вы хотите сделать:

m.write(str(i)) 

Также , у вас есть небольшая опечатка; когда вы используете переменную existing_pass, вы произносите ее в exisitng_pass, но ваш код работает, потому что он орфографический, оба раза он используется.

+0

Проблема с этим, хотя я все еще хочу, чтобы файл записывался на новые строки, я просто не хочу, чтобы в конце была пустая строка. –

1

Что вы можете сделать, чтобы предотвратить завершающую строку новой строки, является печать новой строки в начале строки. Это, очевидно, вводит пустую строку в начале файла. Чтобы не допустить, чтобы вы могли использовать tell(), чтобы проверить, будет ли строка, подлежащая печати, первой линией в файле, и если это так, пропустите новую строку. Это должно устранить проблему завершения новых строк. Это будет выглядеть примерно так:

position = m.tell() 
if position == 0: 
    m.write(str(i)) 
else: 
    m.write('\n'+str(i))