2014-11-02 79 views
0

最後追加行,我有以下Python代碼:的Python:無法讀取文件

#module1 
from module2 import reader 

def registration(userName, password, fileName, delimiter): 
    with open(fileName, 'a') as file: 
     file.write(userName + delimiter + password + '\n') 
    return reader(fileName, delimiter) 


#module2 
def reader(fileName, delimiter): 
    retVal = [] 
    with open(fileName, 'r') as file: 
     for line in file: 
      pair = line.split(delimiter) 
      pair[1] = pair[1].strip() 
      retVal.append(pair) 
    return retVal 

現在,我應該得到的是具有用戶名和密碼字符串列表的列表。讀者可以讀取先前寫入的條目,但不會讀取剛剛通過註冊功能添加的條目。如果我撥打reader函數兩次(返回前一次),我的註冊函數確實會返回正確的列表(使用新添加的用戶)。

任何想法爲什麼會發生這種情況?

+0

我不能在這裏重現(在Win7 x64上使用Python 3.4.1)。你的設置是什麼? – 2014-11-02 14:14:52

+1

寫完後嘗試添加file.close()。 – 2014-11-02 14:20:52

+2

'with'語句已經正確關閉文件:https://docs.python.org/2/library/stdtypes.html#file.close – 2014-11-02 14:36:17

回答

1

我遇到了用於調用這些函數的主要方法的問題。由於這兩個模塊都有一個單獨的main來打印出函數的結果(並且main在模塊文件中被顯式調用),所以當我導入函數時,讀者的main被激活(這是我不知道的python的確,特別是當我使用關鍵字from時)。

無論如何,抱歉虛驚一場。