2011-09-20 6 views
0

파이썬에서 정수 저장 및로드를위한 모듈을 만들었습니다. 필자가 원하는대로 대략 저장할 수 있지만 (Pickle을 사용하고 있습니다)로드 할 때 정수를받습니다. tuple-form (저장하기 위해 튜플을 만들었 기 때문에) 튜플의 구성 요소를 프로그램의 정수에 할당하려고하지만 도움이되지 않을 것입니다! 여기 내 코드는 다음과 같습니다.튜플의 정수를 저장 한 다음 피클을로드하십시오

def save(ob1,ob2,ob3,ob4,ob5): 
    import pickle 
    tmp = ob1,ob2,ob3,ob4,ob5 
    output = open('save.sav','w') 
    pickle.dump(tmp,output) 
    output.close() 

def load(ob1,ob2,ob3,ob4,ob5): 
    import pickle 
    input2 = open('save.sav','r') 
    pickleload = pickle.load(input2) 
    ob1 = pickleload[0] 
    ob2 = pickleload[1] 
    ob3 = pickleload[2] 
    ob4 = pickleload[3] 
    ob5 = pickleload[4] 

나는 aix가 말한 것을 시도했지만 작동하지 않았습니다. 아마 잘못된 장소에 코드를 넣을 것입니다. 엑스, 이걸 더 잘 설명해 주시겠습니까, 아니면 제 코드를 다시 게시 하시겠습니까? 아니면 다른 사람이 나를 도울 수 있습니까?

+0

제목에 문제가 무엇인지에 대한 정보가 없습니다. 응답을 얻지 못하는 또 다른 큰 문제는 태그입니다. "저장"및 "로드"는 완전히 일반적이고 질문에 대한 정보를 제공하지 않습니다. 잠재적 인 응답자에게 유용한 정보를 제공하는 방법에 대해, 내가 추가 한 태그 (특히 "Python")와 제목 재 작성을보십시오. – agf

+0

"그러나 그렇지 않습니다"는 의미는 무엇입니까? 구체적으로 무엇이 발생합니까? 'load' 또는'save'를 어떻게 호출할까요? 오류가 발생하는 경우 게시하십시오! 전체 추적은 'ValueError'가 아닌 모든 종류입니다. – agf

+0

오류가 발생하지 않았으며, 원하는대로 작동하지 않았습니다. – PythonPowerify

답변

1

변경 load()과 같이 : 다음

def load(): 
    import pickle 
    input2 = open('save.sav','r') 
    return pickle.load(input2) 

과 같이 사용할 수 있습니다

ob1, ob2, ob3, ob4, ob5 = load() 

당신이 함수 내에서 ob1 = ...를 할당 할 때 때문에 원래 버전이 작동하지 않는, 변화가 아무튼 (ob1은 참조에 의해 전달되는 불변 객체이므로 참조를 다시 바인딩하지만 새로운 참조는 호출자에게 다시 전달되지 않습니다.) 호출자에게 전파되지 않습니다.

+0

나는 이것을 시도한 직후에, 작동하지 않았고, 내가 뭘 잘못하고 있는지 모른다. 내 코드를 다시 게시 할 수는 있지만 귀하의 방식대로 편집 할 수 있습니까? – PythonPowerify

+0

또한 CPython에서는 refcounting GC로 인해 문제가되지 않지만 "완료"되면 "input2.close()"로 파일을 닫으십시오. 이것은'with open ('sav.sav')를 f : return pickle.load (f)'로 사용하는 것이 더 쉽습니다. ('r'은'open()'의 디폴트 모드이므로 안전하게 떨어 뜨릴 수 있습니다.) –

0

다음 파이썬 코드 스 니펫이 도움이 될 것입니다. 변수 ob1에서 ob5는 pickle.load(open('save.sav', 'r'))의 결과가 할당됩니다. 변수는 전역 변수로 선언되므로 def load(): 함수 외부에서 액세스 할 수 있습니다.

import pickle 
def load(): 
    global ob1, ob2, ob3, ob4, ob5 
    ob1, ob2, ob3, ob4, ob5 = pickle.load(open('save.sav', 'r')) 
관련 문제