2014-10-01 5 views
0

내 Dropbox 폴더 경로와 같은 스크립트에서 상수를 정의하고 싶습니다. 대부분의 내 스크립트는 내 PC간에 공유되는 Dropbox의 일부 데이터를로드하려고 시도하지만 Mac과 Ubuntu 사이의 접두어가 다릅니다 (/Users/<user>/Dropbox/home/<user>/Dropbox).설정 값이 파이썬 세션 이상 지속 됨

DROPBOX와 같은 전역 변수를 가질 수 있도록 각 세션에서로드 될 변수에 이러한 종류의 정보를 저장하는 방법이 있습니까 (좋은 규칙, __DROPBOX__는?)를 파일 이름, 예. fname = DROPBOX + "myfile.txt".

R에 설정이있는 .Rprofile에 이것을 정의하는 것을 상기시켜주는 종류가 있습니다.

또는 더 좋은 방법이 있습니까?

+0

참조 http://stackoverflow.com/questions/13887798/saving-and-recovering-values- 실행 중 변수들 – user3757614

+0

@ user3757614 나쁜 예를 들자면, 필레 링은 확실히 갈 길이 아닙니다. – PascalVKooten

답변

2

당신은 사용자 홈 디렉토리의 경로를 얻을 수있는 환경 변수에 내장을 사용할 수 있습니다 문제를 해결할

import os 
print os.environ['HOME'] 

는 새로운 시스템에서 실행하는 경우 안정적으로 유지 될 가능성이 높습니다 방법입니다 .

+0

훌륭합니다. 무언가가 있었음에 틀림 없습니다. – PascalVKooten

+0

그런 다음 다시 os를 가져오고 그 긴 이름을 사용해야하는 것은 여전히 ​​바람직하지 않습니다. 불행히도 상대 경로로 작업해야한다고 생각합니다. – PascalVKooten

0

이 방법에 대해 :

os.path.expanduser('~/Dropbox') 

아니면 그냥 시도 할 수있는 다른 대안 :

dirs_to_try = ('/Users/Guido/Dropbox', '/home/Guido/Dropbox') 
for path in dirs_to_try: 
    if os.path.isdir(path): 
     break 
finally: 
    print 'cannot find Dropbox directory' 
    path = None 
+0

내 말은 ... 한 가지 방법은 전역 적으로 함수로 만드는 것이지만, 기본적으로는 기본적으로 모든 파이썬 세션에서 사용할 수 있기를 원할 것입니다. 그게 처음부터 문제입니다. – PascalVKooten