2017-05-11 1 views
2

Python에 익숙하지 않으므로 나와 함께하시기 바랍니다. 디렉토리의 내용 만 있으면 이동하려고합니다. 그렇지 않으면 전체 디렉토리를 이동하려고합니다. 입력 디렉토리를 정리하는 것도 이상적입니다.이미지를 다른 디렉토리로 이동하는 방법은 무엇입니까?

for i in new_images: 
    shutil.move(i, out_dir + dir + i) 

대상 경로가 올바르지 :

#!/usr/bin/python 

import sys, os, glob, shutil 

in_dir = '/images_in/' 
out_dir = '/images_out/' 
new_dirs = os.listdir(in_dir) 
old_dirs = os.listdir(out_dir) 

#See if directory already exists. If it doesnt exists, move entire 
directory. If it does exists, move only new images. 

for dir in new_dirs: 
    if dir not in old_dirs: 
     shutil.move(dir, out_dir) 
    else: 
     new_images = glob.glob(in_dir + dir + '*.jpg') 
     for i in new_images: 
      shutil.move(i, out_dir + dir + i) 
+0

어떻게 작동하지 않습니까? –

+0

http://stackoverflow.com/questions/1868714/how-do-i-copy-an-entire-directory-of-files-into-an-existing-directory-using-pyth – handle

답변

1

문제는 당신이 할 때이다 : 여기에 내가 어떤 이유로이 작동하지 않습니다, 지금까지 가지고있는 것입니다. i은 절대 경로상의 glob.glob의 결과입니다. 그래서 또 다른 절대 경로를 앞당기는 것은 잘못입니다. 대신 기본 이름 i을 사용해야합니다.

내가 할 것 :을 제외하고

for i in new_images: 
    shutil.move(i, os.path.join(out_dir, dir, os.path.basename(i))) 

:

  • 그렇게 in으로 조회 setold_dirs을 넣어하는 것은 빠르다 : os.path.join 대신 문자열 연결의 old_dirs = set(os.listdir(out_dir))
  • 사용 경로 부분을 처리 (내 솔루션에서했던 것처럼). 예 : new_images = glob.glob(os.path.join(in_dir,dir,'*.jpg')
  • 는 섀도우 잉하는 모듈 내용을 나열하기 위해 내장되어 있습니다. 큰 관심사는 아니지만 그것을 피하는 것이 좋습니다.
+0

n00b를 도와 주셔서 감사합니다. 정말 도움을 주셔서 감사합니다! – Jaken551

관련 문제