2011-11-21 4 views
0

일부 데이터를 피클링하고 파일에 저장하는 파이썬 프로그램을 만들고 있습니다. 작동하지 않습니다. 나는 그것을 닫기로 라인을 코멘트 경우VERY 홀수 파이썬 NameError

File "C:/foo/bar/baz.py", line 26, in newData 
    close(file) 
NameError: global name 'close' is not defined 

, 내가 얻을 :

File "C:/foo/bar/baz.py", line 26, in newData 
    #close(file) 
NameError: global name 'close' is not defined 

path="C:/foo/bar" 
def newData(): 
    import pickle 
    data = [ 
     ["foo"], 
     ["bar"], 
     ["baz"] 
    ] 
    file = None 
    i = 0 

    while file==None: 
     if not exists(path + str(i)+".data"): 
      file = open(path + str(i)+".data", "w+") 
     else: 
      i+=1 
    pickle.dump(data, file) 
    close(file) 
    return path + str(i)+".data" 

나는 "전역 이름 가까이가 정의되어 있지 않습니다"라고 말하는 이름 오류 내 코드가 잘못 되었습니까 (예)? 방법?

+1

how 'bout'file.close()' – JBernardo

+0

@JBernardo Nope. 파일 "C : /foo/bar/baz.py", newData file.close() NameError : 전역 이름 'close'가 정의되지 않았습니다. –

+0

close()로 행을 주석 처리하고 ' 오류를 계속해서 보아도, 그것은 당신이 생각하는 다른 노선에 있습니다. –

답변

4

파일을 편집하고 있지만 웹 서버는 여전히 이전 코드를 실행하고 있습니다. 추적 표시는 소스 파일을 읽어 라인을 표시하지만, 그 라인을 실행하는 것은 아닙니다. 주석 행을 문제로 나타내는 언급 한 추적에서 분명합니다.

@JBernardo가 주석을 달았으므로 "close (file)"를 "file.close()"로 변경해야합니다. 그런 다음 웹 서버가 강제로 코드를 다시로드해야합니다.

+1

그 밖의 모든 것이 실패 할 경우 해당 .pyc 파일을 삭제하면 도움이 될 수 있습니다. –

+0

감사합니다. –

관련 문제