2013-07-03 6 views
4

내가 다음이,정의 된 루트 디렉토리에서 파일의 상대 경로를 얻는 방법은 무엇입니까?

base_dir = 'blog_images' 
dir_to_serve = os.path.abspath(settings.MEDIA_ROOT + base_dir) 

images = [] 
allowed_types = ('.jpg', '.jpeg', '.png', '.gif') 
for root, dirs, files in os.walk(dir_to_serve,topdown=False): 
    for image_file in files: 
     if image_file.endswith((allowed_types)): 
      images.append(image_file) 

내가 가지고있는 디렉토리 구조는 다음과 같다;

media --> blog_images --> <year> --> <month> --> <date> --> files 

() 나는 등 각 디렉토리의 루트를 얻을 수 있어요,하지만 난 달성하기 위해 노력하고하면 이미지 목록을 다음 년/월/일 오프 사전 키를 구축하는 것입니다 os.walk 사용 그 열쇠 밑에. 그래서 예를 들어 2013 년은 다음 달에 하루에 대한 이미지를 가지고 있으므로 템플릿으로 날짜별로 액세스 할 수 있습니다.

blog_images와 관련하여 해당 루프에서 파일의 상대 경로를 얻는 방법은 무엇입니까? 템플릿에 사용할 사전을 어떻게 만들 수 있습니까? 내가보고 있어야하는 기능은 무엇입니까?

답변

4

os.path.relpath() 될 것이라고 :

>>> import os 
>>> filename = "C:/test/media/blog_images/2013/06/15/yay.gif" 
>>> blog_images = "C:/test/media/blog_images/" 
>>> os.path.relpath(filename, blog_images) 
'2013\\06\\15\\yay.gif' 
관련 문제