2017-01-10 1 views
1

파이썬에 파일의 현재 경로와 원하는 경로를 포함하는 사전이 있습니다.파이썬에서 사전에 참조 된 파일을 이동하십시오.

files = { 
    'C:\\Users\\a\\A\\A.jpg': 'C:\\Users\\a\\A\\test_a\\A.jpg', 
    'C:\\Users\\a\\B\\B.jpg': 'C:\\Users\\a\\B\\test_a\\B.jpg', 
    'C:\\Users\\a\\C\\C.jpg': 'C:\\Users\\a\\test_a\\C.jpg' 
} 

지도의 항목을 shutil.move() 함수의 인수로 어떻게 사용할 수 있습니까? 나는 성공하지 못한 채 여러 가지 방법을 시도했다.

+0

시도한 내용을 표시 할 수 있습니까? 키 - 값 쌍에 대해 무엇을 기대 했습니까? 'for source, files.items()의 dest : shutil.move (source, dest)'커버합니까? –

답변

5

무엇에 대해 : 당신은 단순히 사전의 (key,value) 튜플을 반복하고, 이들에 shutil.move 함수를 호출

for frm,to in files.items(): 
    shutil.move(frm,to) 

.

유일한 문제는 디렉토리를 먼저 구성해야한다는 것입니다. 디렉토리를 먼저 구성해야합니다. 그렇지 않으면 개체 이동이 실패 할 수 있습니다. 먼저 os.path.dirname을 감지하고 디렉토리가 존재하는지 확인한 다음 해당 디렉토리를 만들지 않으면 감지 할 수 있습니다.

#only if you are not sure the directory exists 
for frm,to in files.items(): 
    directory = os.path.dirname(to) 
    os.makedirs(directory,exist_ok=True) #create a directory if it does not exists 
    shutil.move(frm,to) 
+1

감사합니다 !!! 나는'items()'함수를 사용하는 것을 잊었다 ..... – user2666249

관련 문제