2016-04-08 6 views
-1

Python konusunda yeniyim ve bir parola yöneticisi kurmaya çalışıyorum. sorunu, programım IDLE veya Pycharm aracılığıyla çalıştırdığımda iyi çalışır, ancak parola depoladığım dosyayı aldığım satırın bulunduğu satıra ulaştığımda doğrudan pencerelerden çalıştırdığımda çalışmayı durdurur.Python programı txt dosyasını açamıyor

import time 

user = raw_input("Username: ") 
pw = raw_input("Password: ") 
if user == "PrOoOg" and pw == "aka443": 
    def add_acc_func(acc, user, pw): 
     database.write("\nAccount: ") 
     database.write(acc) 
     database.write(" Username: ") 
     database.write(user) 
     database.write(" Password: ") 
     database.write(pw) 
     database.close() 


    def print_database_func(): 
     for lines in database.readlines(): 
      print lines.strip('\n') 
     database.close() 

    user_input = raw_input('Press "A" to add a new account\nPress "M" to modify and existing account\n' 
          'Press "D" to delete and existing account\nPress "S" to show all accounts and passwords\n') 
    user_choice = user_input.lower() 
    if user_choice == "a": 
     database = open("source.txt", "a") #Everything worked fine when i deleted this line 
     acc_to_add = raw_input("Write the name of the site or service: ").lower() 
     acc_to_add_user = raw_input("Write the username or email you want to set for that account: ") 
     acc_to_add_pw = raw_input("Write the password you want to set to that account: ") 
     add_acc_func(acc_to_add, acc_to_add_user, acc_to_add_pw) 
     print "Account added" 


    if user_choice == "s": 
     database = open("source.txt", "r") #Everything worked fine when i deleted this line 
     print_database_func() 

    raw_input("Press Enter to quit") 
else: 
    print ("Wrong username or password") 
    time.sleep(3) 

Metin dosyasını aldığım satırları silmeye çalıştım ve çalıştı. Kodun neden pencerelerden açıldığında dosyayı açamadığını ve IDLE veya Pycharm

+0

bu kodun tüm mı: İşte geçerli kullanıcının Belgeler klasörünü kullanmak için bir örnektir? Herhangi bir hata mesajı alıyor musunuz, yoksa sadece dosyaya yazmıyor mu? – kirkpatt

+0

Hangi hata veriyor. Özellikle IDLE hakkında bilmiyorum - ancak IDE'yi kullandığınızda mevcut çalışma dizini farklı olabilir. –

+0

evet bu tüm kod ve hem IDLE hem de Pycharm ile iyi çalışıyor. Pencerelerden çalıştırdığımda sadece çöküyor (rightclick ==> ==> python.exe ile açık) bir hata mesajı yazdırıyor ancak program hata mesajından hemen sonra çalışmayı durdurduğundan beri ne yazdığını okuyamıyorum. – PrOoOg

cevap

0

'dan açıldığında açabileceğini bilmiyorum. "Pencerelerden çalıştırdığımda kilitleniyor (rightclick ==> open with ==> python.exe) "

Bunu yaptığınızda, çalışma dizini C: \ Windows \ system32'dir. Büyük olasılıkla bu dizinde yazma izniniz yok. Komutu diğer yöntemleri kullanarak çalıştırırken, çalışma dizini büyük ihtimalle komut dosyasını içeren dosyadır. Yazma iznine sahip olduğunuz bir dizine değiştirmeniz gerekiyor.

import os dir = os.path.expanduser('~/Documents') os.chdir(dir)