2013-05-03 2 views
4

:Python : 패키지 내의 파일에 쓰기? 이 일반적인 구조를 사용

setup.py 
/package 
    __init__.py 
    project.py 
    /data 
     client.log 

내가 client.log에 이름 목록을 저장하는 스크립트를 가지고, 그래서 그 목록을 나는 그것에 접근이 필요하거나 모듈을 실행할 때마다 다시 초기화 할 필요가 없습니다. pkg_resources으로이 구조를 설정하기 전에 명시적인 경로로 로그를 업데이트하기 위해 open('.../data/client.log', 'w')을 사용했지만 더 이상 작동하지 않습니다.

모듈 내에서 데이터 파일을 편집 할 수있는 방법이 있습니까? 아니면이 목록을 저장하는 더 좋은 방법이 있습니까?

+1

데이터를 사용할 수 있지만 데이터는 일반적으로 코드와 함께 사용하면 안됩니다. 그래서 그것을 다른 디렉토리로 옮기고 그곳에서 /로 읽고/쓰기하는 것을 고려하십시오. –

답변

4

아니요, pkg_resources은 패키지 내의 리소스를 읽는 데 사용됩니다. 로그 파일을 쓰는 데이 파일을 사용할 수 없습니다. 로그 파일의 위치가 잘못되어 있기 때문입니다. 패키지 디렉토리는 일반적으로 라이브러리를로드하는 사용자가 쓸 수 있어야합니다. 또한 패키지가 실제로 ZIP 파일 안에있을 수도 있습니다.

대신 로그를 로그 디렉토리에 저장해야합니다. 어디에 두어야 할 것인가는 가장 중요한 문제는 운영 체제뿐 아니라 시스템 소프트웨어 또는 사용자 소프트웨어 일 수도 있습니다.

+0

이 파일은 일반적으로 Windows에 저장되는 위치는 어디입니까? 그리고 코드에서 이것을 구현하는 가장 좋은 방법은 무엇입니까? 나는'% appdata %'또는 임의로'user \ my documents' 같은 것을 추측하고 있습니다. 그런 다음 .ini 또는 config 파일을 사용하여 응용 프로그램을 초기화 할 때 해당 경로를 매핑 할 수 있습니까? 모든 방향/조언이 도움이 될 것입니다. – Insarov

+0

@Insarov : 일반적으로 '% APPDATA % \ YourApplicationName'에 저장합니다. –