2010-01-24 4 views
3

파이썬 패키지에 데이터 파일을 포함하고 싶습니다. here 제안 실제 패키지에 넣어하는 가장 좋은 장소, 즉파이썬 데이터를 저장/검색하는 기본 방법

setup.py 
src/ 
    mypkg/ 
     __init__.py 
     module.py 
     data/ 
      tables.dat 
      spoons.dat 
      forks.dat 

아니면이 할 수있는 더 좋은 방법은 무엇입니까? 파이썬 내부에서 데이터 파일을 검색하는 가장 좋은 방법은 무엇입니까? 내가

mypkg.__path__ + 'data/tables.dat' 

예를 들어 사용하는 경우, 또는 내가

pkgutil.getdata('mypkg','tables.dat') 

사용해야하거나 다시,이 작업을 수행하는 또 다른 더 좋은 방법은 무엇입니까?

일반적으로 파이썬 패키지 내에서 데이터를 처리하는 현재 선호되는 방법은 무엇입니까?

답변

3

pkgutil은 당신도 데이터를로드 할 수 있다는 것을 의미합니다 패키지가 ZIP 파일에 설치되어있는 경우이를 지원하려면 바람직합니다. 그것과 같은 데이터 디렉토리에 저장하는 것은 괜찮습니다. 나는 항상 그렇게합니다. :)

-2

데이터를 Pickle 모듈을 통해 Python 데이터 구조로 저장해야합니다. 그런 식으로, 당신이 그것을 부르면 (load) 데이터가 사용될 준비가되고 모든 스크립트에서 그것을 처리 할 필요가 없다. 위치에 관해서는

, 그것은 당신이 사용자에게 투명하고 명확한 방법으로 그것을 저장하는 것이 의미가, 다음은 나에게 직관적 인 것 같다

from package import data 
+0

절대로 절인 된 데이터가 여전히 일종의 데이터 파일에 있어야하므로 질문에 실제로 대답하지 않습니다. 그리고 또한 "해야"는 강한 단어입니다. 피클 파일로 저장할 수 있지만 예를 들어 편집하기가 어렵습니다. 종종 CSV가 더 좋습니다. 또한 이와 같이 저장하는 공통 데이터는 이미지 파일입니다. 피클을 만들 이유가 없습니다. –

+0

@Lennart : 나는 당신이 데이터를 절식 할 시점을 얻지 못했을 것이라고 생각한다. "사용 준비가 끝났을 때 그 방법으로"나는 이것이 당신이 무엇을 의미하는지 이해하고 있다고 생각하지만 다만 설명 할 것이다. 만약 당신이 저장하면, 말하자면 csv 파일을 작성한 다음 독자를 구현하고 각 행을 목록에 저장해야합니다 (목록이 필요함). 피클 링하면 직접 목록을 호출하고 "목록 작성"단계를 저장합니다. "편집하기 힘든"부분에 대해서는 데이터입니다. 맞습니까? 편집이 필요한 경우 목록에서 직접 편집하고 피클을 다시 작성하면됩니다. 데이터 직렬화가 무엇을 의미합니까? – Escualo

+0

산 세척은 완전히 안전하지 않습니다 - http://nadiana.com/python-pickle-insecure. 또한 파이썬에 특화된 것이고 레나 트 (Lennart)가 말했듯이, 손으로 직접 해킹 할 수있는 것은 아닙니다 (항상 유용한 것입니다). JSON과 같은 언어에 구애받지 않는 형식을 사용하는 것이 나을 것입니다. 또한, 이것은 '데이터 위치'보다는 오히려 OP가 원하는 '데이터 형식'에 대해서만 이야기합니다. –

관련 문제