configparser와 같은 것이 실행 사이에 상태 (키, 값)를 저장하기에 적합합니까?

StackOverflow https://stackoverflow.com/questions/916779

  •  06-09-2019
  •  | 
  •  

문제

Python 프로그램의 실행 사이에 키, 값 쌍 (문자열, int) 세트를 저장하고 후속 실행에서 다시로드하고 다음 실행에서 사용할 수있는 변경 사항을 작성하고 싶습니다.

이 데이터를 구성 파일로 생각하지는 않지만 ConfigparSer 기능에 잘 맞습니다. 두 개의 [섹션] 만 있으면됩니다. 그것은 단지 수백 쌍이며 매우 간단하기 때문에 실제 데이터베이스를 수행 할 필요는 없다고 생각합니다.

이런 식으로 configparser를 사용하는 것이 적절합니까? 또한 Perl 및 XML :: Simple 사용을 고려했습니다. 그게 어때? 파이썬이나 Perl이없는 Bash 에서이 작업을 수행하는 방법이 있습니까?

도움이 되었습니까?

해결책

글쎄, 당신은 더 나은 옵션이 있습니다. 예를 들어 사용할 수 있습니다 간물 또는 JSON 체재. 피클 직렬화 모듈은 사용하기가 매우 쉽습니다.

import cPickle
cPickle.dump(obj, open('save.p', 'wb')) 
obj = cPickle.load(open('save.p', 'rb'))

형식은 사람을 읽을 수 없으며, 불필요는 잘못 또는 악의적으로 구성된 데이터에 대해 안전하지 않습니다. 신뢰할 수없는 데이터를 소진해서는 안됩니다.

Python 2.6을 사용하는 경우. JSON. 사용하기가 쉽습니다.

import json
encoded = json.dumps(obj)
obj = json.loads(encoded)

JSON 형식은 사람이 읽을 수 있으며 파이썬의 사전 문자열 표현과 매우 유사합니다. Pickle과 같은 보안 문제가 없습니다.

이전 버전의 파이썬을 사용하는 경우 Simplejson 대신에.

다른 팁

나를 위한, pyyaml 이런 종류의 일에 잘 작동합니다. 나는 전에 피클이나 구성을 사용했었다.

configparser는 훌륭한 방법입니다. 텍스트 파일 또는 이진 파일을 원할지 여부와 코드가 이전 버전의 Python에서 단순히 작동하도록하려는 경우에 따라 다른 방법 (이미 언급 된 JSON 및 CPICKLE 모듈이 이미 유용 할 수 있음)이 있습니다.

선택한 방법 위에 얇은 추상화 레이어를 사용하여 마음을 쉽게 바꿀 수 있도록 원할 수 있습니다.

a DBM. 기본적으로 프로그램 외부에서 살아가는 것은 해시입니다. 많은 구현이 있습니다. Perl에서는 사소한 일입니다 DBM을 해시에 묶습니다 (즉, DBM이 실제로 일반 해시 변수처럼 보이게합니다). 파이썬에 메커니즘이 동등한 지 모르겠지만, 그렇지 않으면 놀랄 것입니다.

Bash에서 다시 수행 : 문자열이 유효한 식별자 인 경우 환경 변수를 사용할 수 있으며 env.

State Key를 키로 업데이트 할 수 있으면 DBM 데이터베이스가 작동합니다. 실제로 고성능과 소형 스토리지가 필요한 경우 도쿄 캐비닛 - http://tokyocabinet.sourceforge.net/ 멋진 장난감입니다.

한 번에 모든 것을 저장하고로드하려면 (오래된 버전이나 일부를 유지하기 위해) 데이터가 너무 많지 않으면 JSON을 사용하십시오. XML보다 작업하는 것이 훨씬 좋습니다. JSON 구현이 어떻게 파이썬에 있는지는 모르겠지만 Perl에서는 JSON :: XS 모듈이 미친 듯이 빠릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top