2015-01-12 85 views
1

我在分割python中的這個列表時出現問題。我想要它做的是拆分列表,但保持密碼鏈接到用戶名。如何拆分從文件中讀取的字符串

Users = [] 
NewUser = input("Enter the new Users Username: ") 
UserPass = input("Enter the new Users Password: ") 
Users.append([NewUser, UserPass]) 
Pfile = open('Passwords','r') 
print(Pfile.read()) 
CurrentUsers = Pfile.read() 
Pfile.close 
Pfile = open('Passwords','w') 
OldUsers = [] 
OldUsers = CurrentUsers.split() 
print(OldUsers) 
Users.append(OldUsers) 
print(Users) 

我得到的問題是串在最後三版完全摧毀,而不是分裂,我得到:

[['Dan', 'Span'], ['Tim', 'Can']] - previous data already stored 
[''] - the split values 
[['Tin', 'im'], ['']] - the new values added to my previous list 

我認爲這可能是一個錯字或分裂的不正確的方法列表

謝謝

+1

你有沒有使用文件而不是數據庫的原因?我建議使用帶有適當密碼散列方案的數據庫(如MySQL)(不要自己推出)。 –

+0

拆分清單?你的意思是字符串?因爲split()是一個str方法 – ProgrammingIsAwsome

+1

你也沒有關閉文件'Pfile.close < - 沒有parens',你應該使用'with'來打開你的文件,你不必自己關閉它們 –

回答

4

您從文件中讀取()兩次。首先將讀取值存儲到變量中,然後打印該變量。

從已打開的輸入流中讀取()所有數據後,該流將「耗盡」,並再次從中讀取不會產生任何附加數據(即,文件不會簡單地「再次讀取」)。爲什麼你在結果中看到空字符串?

+2

你可能想要解釋一下,調用'read'將指針移動到文件末尾,所以再次調用'read'從文件尾部讀取。這可以通過按照您的建議進行修改並將該值存儲在變量中並使用它,或者在再次讀取之前調用打開文件上的「seek(0)」來解決。 – sberry

+0

我同意這是另一種可能性。更簡單的是再次打開()另一個IO流。但是鑑於那些顯然效率較低的解決方案,並且我認爲OP只是學習Python甚至編程,所以最好將它留在那裏。 – fnl