2016-06-06 5 views
0

파이썬을 사용하여 스마트하게 재구성하려는 파일 모음이 있습니다. 이 파일은 주 - 주 - 연도별로 제공되며 다음 형식의 폴더 구조에 저장됩니다 : \ state \ year \ county \ image.jpg 카운티마다 많은 이미지가 있습니다. 일부 나중에에 정권을 명명 내 파일을 변경할 수있는 방법 (예를 들어, 현재 state_year_county_image.jpg에서 year_state_county_image.jpg하는스마트 방식으로 파일 이름 바꾸기

import os, shutil 
path = "C:\\Users\\me\\" 
path_copies = "C:\\Users\\me\\copies\\" 
state_list = os.listdir(path) 
for state in state_list: 
    year_list = os.listdir(path+state) 
    for year in year_list: 
     county_list = os.listdir(path+state+"\\"+year) 
     for county in county_list: 
      image_list = os.listdir(path+state+"\\"+year+"\\"+county) 
      for image in image_list: 
       path_old = path+state+"\\"+year+"\\"+county+"\\"+image 
       path_new = path_copies+state+"_"+year+"_"+county+"_"+image 
       shutil.copy(path_old, path_new) 

또는 따르면 : 나는 state_year_county_image.jpg 모든 파일 이름을 변경 복사본을 다음과 같은 코드를 내가 나중에 필요할 수도있는 다른 이름 지정 체계)? 더 많은 융통성을 허용한다면 다른 기본 명명 규칙을 채택 할 수는 있지만 파일 이름에 원래 폴더 이름을 반영하고 싶습니다.

+1

왜 당신이 첫번째 장소에있는 파일 이름을 바꾸는? 귀하의 설명에서 나는 당신이 정말로 많은 이미지를 가지고 있다고 가정하고, 그것들을 모두 하나의 폴더에두면 파일을 찾기가 더 어려워 질 것입니다. 파일 이름의 어느 부분이 주, 카운티, 연도인지 모호하지 않는 한 나중에 이름을 변경해도 문제가 없습니다. 또한 이미지에 태그를 지정할 수있는 일부 사진 관리 소프트웨어를 사용해야합니다. – Pyfisch

답변

0

os.walk가 당신이 원하는 것일 수 있습니다. 또한 검색 디렉토리에 안에 이미지를 옮기지 않는 것이 좋습니다. 다시 처리하는 데 혼란을 겪을 수 있습니다. 이 같은

뭔가 :

import os 
import shutil 

SRCDIR = r'C:\Users\me\originals' 
DESTDIR = r'C:\Users\me\copies' 

for dirname, dirs, files in os.walk(SRCDIR): 
    dname = dirname.replace(os.path.sep, '_') 
    for file in files: 
     shutil.copy(file, os.path.join(DESTDIR, 
             "{}_{}".format(dname, file))