2017-12-18 13 views
0

일부 파일이 있는데이를 일부 폴더로 옮기고 싶습니다. 파일 수에 따라이 폴더를 만드는 코드를 만들었습니다. 파일을 각 폴더로 이동하려면 어떻게해야합니까? 이 같은폴더를 만드는 동안 파일을 폴더로 이동

import os 
import errno 

src = (os.path.expanduser('~\\Desktop\\output8\\singola\\')) 

causali = os.listdir(src) 
causali.sort(key=lambda x: int(x.split('.')[0])) 

for file in enumerate(causali): 
    try: 
     id_folder = os.makedirs(os.path.expanduser('~\\Desktop\\output8\\singola\\{}'.format(file[0]))) 
    except OSError as e: 
     if e.errno != errno.EEXIST: 
      raise 

뭔가 ..

example

+0

모든 파일은 하나의 디렉토리에 있습니다. 그들을 다른 디렉토리로 옮기고 싶습니까? – mtkilic

+1

파이썬 라이브러리'shutil'을 보시오 – mtkilic

+0

@mtkilic 나는 shutil을 사용하고 있는데, 이렇게하기 위해 문자열 형식 논리를 이해할 수 없다. 나는 일을하는 또 다른 방법을 찾았지만 나는 그것을 좋아하지 않는다. – Link

답변

1

os.rename() 또는 shutil.move(), 그들은 모두 같은 구문을 가지고있다. 디렉토리에있는 각 파일 이름에 대한 하위 디렉토리 (폴더)를 생성하는 코드 아래는 경우

os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo") 
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo") 

,

import os 
import errno 

src = (os.path.expanduser('~\\Desktop\\output8\\singola\\')) 

causali = os.listdir(src) 
causali.sort(key=lambda x: int(x.split('.')[0])) 

for file in enumerate(causali): 
    try: 
     id_folder = os.makedirs(os.path.expanduser('~/test_move/{}'.format(file[0]))) 
     os.rename(os.path.expanduser('~\\Desktop\\output8\\singola\\{}'.format(file[1])),os.path.expanduser('~\\Desktop\\output8\\singola\\{}\\{}'.format(file[0],file[1]))) 
    except OSError as e:path/to/new/destination/for/file 
     if e.errno != errno.EEXIST: 
      raise 
+0

LOL, 나는 해결책을 찾기 위해 당신에게 90 % 가까이 ... – Link

+1

위대한, 나는 그것이 당신의 마음에 더 많이 집착 할 것이라 확신합니다. 잘 했어! – andrewnagyeb

1

, 폴더의 이름은 파일 이름과 동일 할 것이다. 그리고 각 파일은 같은 이름의 폴더로 이동합니다.

import glob, os, shutil                  
source = "C:\\Users\\xx\\Desktop\\Folder" 

for file_path in glob.glob(os.path.join(source, '*.*')): 
    new_sub_folder = file_path.rsplit('.', 1)[0] 
    os.mkdir(os.path.join(source, new_sub_folder)) 
    shutil.move(file_path, os.path.join(new_sub_folder, os.path.basename(file_path)))