まず、私はpythonの初心者ですので、必要な場合を除き、上級の回答は控えてください。私はユーザー名とパスワードを必要とするログインプログラムを書いています。ファイルを読み込んで辞書に追加し、人がログインするか新しいログインを作成し、新しいログインを書き込みますプログラムを再実行すると、読み込みと書き戻しが行われます...私が実行している問題は、新しいログインが作成されると、新しいログインがファイルに書き込まれますが、同時に書き込まれるということですもう一方の辞書は辞書にファイルに再度ログインします。ユーザー名とパスが繰り返されないようにする方法はありますか?ここでは、テキストファイルがどのように見えるかの例です:ユーザ名とパスワード辞書を使用してファイルに書き込むpythonプログラムどのように反復しないで行うのですか
joe dw < ---- old login and pass
joe dw <---- repeated login and pass
jack dw <--- new login and pass
それは混乱に見えるか、私は多くのコメントを持っていないことを怒っている場合、私はすべてをコメントするだけで新たなんだ場合、これは私のコードに残念です私が行います。dictToFile
で
login = {}
def fileToDict():
'''this reads the file and writes it into the dictionary'''
with open("login.txt", "r") as f:
for line in f:
(key, val) = line.split()
login[key] = val
def addUser(username, password):
'''basic user and login function'''
if username in login:
print("Username already exists")
else:
login[username] = password
dictToFile()
def checkUser(username, password):
'''checks where the username and password is in the dictionary'''
if username in login:
if password == login[username]:
return True
else:
return False
else:
return False
def dictToFile():
'''this writes the current dictionary into a file'''
with open("login.txt", "a+") as f:
for k, v in login.items():
line = '{} {}'.format(k, v)
print(line, file=f)
fileToDict()
addUser("john","dw")
print(login)
私はupvoteを意味しなかった、私はdownvoteすることを意味しました。とにかく、私は実際に何かを上書きしたくない、私はテキストファイルに追加したい、私はちょうど同じユーザー名とパスワードを繰り返すしたくない。 – Joe
'dictToFile'は古いものと新しいものの* all *をループしますが、それらを区別することはできません。それを考えると、ファイル全体を上書きすることで、目的の出力を生成することができます。新しいものだけを追加したい場合は、それらを識別するための何らかの方法が必要です。 –
オハイオ州私はちょうどあなたが正しいことを認識しました!ありがとうxD – Joe