2014-11-02 3 views
0

의 마지막에 추가 라인을 읽을 수 없습니다 난 다음 파이썬 코드가 있습니다파이썬 : 파일

이제
#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 사용). 당신의 설정은 무엇입니까? –

+1

작성한 후 file.close()를 추가하십시오. –

+2

'with' 문은 이미 파일을 제대로 닫습니다 : https://docs.python.org/2/library/stdtypes.html#file.close –

답변

1

필자는 이러한 함수를 호출하는 데 사용 된 main 메서드에 문제가있었습니다. 두 모듈 모두 함수의 결과를 출력하는 별도의 main을 가지고 있기 때문에 (그리고 그 main은 모듈 파일에서 명시 적으로 호출되고있다.) 함수를 가져 왔을 때 독자의 main이 활성화되었다. 파이썬은 특히 from 키워드를 사용했을 때와는 다릅니다).

어쨌든 잘못된 경보에 죄송합니다.