2013-12-19 2 views
0

내 (파이썬) 응용 프로그램은 파일을 메모리에로드하고 사용자가 데이터를 점진적으로 편집/저장하도록합니다. 데이터는 대부분 키/값 쌍이므로 JSON을 사용하여 정보를 나타낼 생각이었습니다. 응용 프로그램은 사용자가 데이터에 액세스 할 수있는 유일한 수단이므로 저장된 데이터의 정확한 형식은 응용 프로그램 설계에 의해서만 결정됩니다. 파일 크기가 너무 커지지 않으므로 메모리 부족은 제약이되지 않습니다. 사용자가 "저장"하기로 결정할 때마다 이전 파일을 완전히 지우고 새 데이터를 쓰는 것보다 정보를 디스크에 보존하는 더 좋은 방법이 있습니까?파일 편집 및 저장

답변

2

개체를 저장할 때마다 개체를 JSON으로 변환하고 디스크에 기록해야합니다. shelve이 귀하의 필요를 충족시킬 수 있는지 조사하고 싶을 수 있습니다. 당신은

import shelve 
db = shelve.open('data.db') 
print db['keyname'] 
db['keyname'] = 'some new user data' 
db.sync() 
db.close() 

shelve의 가장 큰 장점은 사용의 용이성입니다 ... 키와 같은 문자열을 사용하여 디스크에 사전을 지속하고 필요에 따라 특정 키를 업데이트 할 수 있습니다. 단점은 대용량 파일에 대한 액세스 속도가 느리고 시스템 간 호환성이 없으며 타사 소스의 파일을 신뢰할 수 없다는 점입니다. 따라서 사용자가 서로에게 이메일을 보내거나 네트워크를 통해 콘텐츠를 공유 할 것으로 예상되는 경우 shelve은 안전한 선택이 아닙니다.

+0

크로스 플랫폼 호환이 아니기 때문에 이것은 내 응용 프로그램의 요구 사항을 충족시키지 못합니다. 그러나, 나의 원래 질문은 아직도 서있다; 이전 파일을 완전히 지우고 새 데이터를 쓰는 것보다 정보를 디스크에 보존하는 더 좋은 방법이 있습니까? – Josh

+1

@Josh 네, 데이터베이스는 이것으로 훌륭합니다. SQLite는'shelve'에 대한 하나의 대안입니다. 이를 키 값 저장소로 사용하고 변경된 레코드 만 업데이트 할 수 있습니다. – ChrisP

+0

정보 주셔서 감사합니다! – Josh