2010-12-05 3 views
0

런타임에 텍스트 데이터 파일에 액세스해야하는 클래스 메소드 (ifstream을 사용하여)가 있어야합니다. 현재 방법은 데이터 파일이 어떤 상대 경로없이 공유 객체는 파이썬 코드에서로드런타임에 데이터 파일에 액세스하는 공유 객체 활성화 방법 (UNIX)

ifstream dataFile("data.txt"); 

같은 즉, 뭔가 개방 가능하며,이 적재 가능하기 위해서는,이되는 것으로 가정 메이크 파일의 빌드 후 단계로 \usr\lib\ 폴더에 복사됩니다. 내 질문은 텍스트 데이터 파일 공유 개체에 사용할 수 있도록 만드는 방법입니다.) (예를

  • 어떤 상대 경로를 사용하지만, 그 방법은 완전히-바보 증거 (프로젝트는 다양한 인스턴스에서 호스팅 내가 디렉토리 트리가 동일하게 유지됩니다 확신 할 수 없다되지 않은 : 나는 다음과 같은 가능성을 고려했다 지금부터 한 달).
  • 데이터 파일도 \usr\lib에 복사하십시오. 그러나 이것이 잘못된 태도라고 생각합니다.

모든 의견을 환영합니다.

+0

데이터 파일이 수정 될 것으로 예상됩니까? –

+0

@Ignacio Vazquez-Abrams : 예, 다시 컴파일 할 필요없이 구성을 변경할 수있는 콘텐츠 파일이라고 생각하십시오. –

답변

2

올바른 방법은 텍스트 파일의 위치를 ​​프로젝트를 설치할 때 설정할 수있는 값으로 만드는 것입니다./etc /에있는 설정 파일을 사용하는 것은 그 값을 저장하는 일반적인 방법입니다.

그런 식으로 텍스트 파일을 예 :/usr/share /에 머신에 독립적 인 모든 파일 (해당 데이터 파일 은 기계에 독립적 인입니다)을 찾고 코드는 어디에서 찾을 수 있는지 "알 수 있습니다.

데이터 파일이 코드 작업의 일부로 수정되는 경우 파일 시스템 계층 표준에 따라/var (/ var/lib 또는 아마도/var/cache) 아래에 배치해야합니다 (FHS) 및 대부분의 다른 유닉스 파일 시스템 표준을 포함한다.

데이터 파일이 구성 파일로 간주 될 수있는 경우 사용자 의견 중 하나에서 언급했듯이/etc/(예 : /etc/MyProject/data.cfg) 아래의 경로로 하드 코드 할 수 있습니다. 계속해.

+0

예, 컴퓨터에 독립적입니다. 감사! –

0

나는 두 가지 솔루션을 생각할 수 있습니다 : 당신이 당신의 공유 객체를로드 할 때

  • , 당신은 어떻게 든 당신의 파일에 대한 경로를 제공합니다.
  • 파일을/usr/lib에 복사하는 대신 기호 링크를 만들 수 있습니다./usr/lib에서 수행하지만 imho를 수행하는 것이 가장 좋습니다.

첫 번째 해결 방법이 가장 좋습니다.