2015-01-03 255 views
3

在下面的目錄中,遞歸從子目錄將文件移動到文件夾中的父目錄

/Drive/Company/images/full_res/ 

存在超過900 .jpg文件,就像這樣:從「FULL_RES」

Skywalker.jpg 
Pineapple.jpg 
Purple.jpg 
White.jpg 

的上一層('圖像'),存在與'full_res'中的圖像幾乎相同數量的文件夾,並且大部分被相應地命名,如下所示:

.. 
. 
Skywalker/ 
Pineapple/ 
Purple/ 
White/ 
full_res/ 

我需要將full_res中的所有文件移動或複製到其'images'中相應命名的文件夾,同時將文件重命名爲'export.jpg'。結果應該是這樣:

/Drive/Company/images/ 
---------------------- 
.. 
. 
Skywalker/export.jpg 
Pineapple/export.jpg 
Purple/export.jpg 
White/export.jpg 

This is the closest thing我能找到有關我的查詢(我想?),但我正在尋找一種方式與Python做到這一點。下面是我能夠產生什麼:

import os, shutil 

path = os.path.expanduser('~/Drive/Company/images/') 
src = os.listdir(os.path.join(path, 'full_res/')) 

for filename in src: 
    images = [filename.endswith('.jpg') for filename in src] 
    for x in images: 
     x = x.split('.') 
     print x[0] #log to console so I can see it's at least doing something (it's not) 
     dest = os.path.join(path, x[0]) 
     if not os.path.exists(dest): 
      os.makedirs(dest) #create the folder if it doesn't exist 
     shutil.copyfile(filename, os.path.join(dest, '/export.jpg')) 

可能有很多的錯,但我懷疑我最大的弱點之一有事情做與我的列表中理解概念的誤解。無論如何,我一直在爲此苦苦掙扎,直到現在我可能自己手動移動並重命名所有這些圖像文件。任何和所有的幫助表示讚賞。

+0

看看'images'。這將是一個「真」和「假」的列表。 – roippi

回答

1

你是從正確的答案並不很遠。

import os, shutil 

path = os.path.expanduser('~/Drive/Company/images/') 
src = os.listdir(os.path.join(path, 'full_res')) 

for filename in src: 
    if filename.endswith('.jpg'): 
     basename = os.path.splitext(filename)[0] 
     print basename #log to console so I can see it's at least doing something (it's not) 
     dest = os.path.join(path, basename) 
     if not os.path.exists(dest): 
      os.makedirs(dest) #create the folder if it doesn't exist 
     shutil.copyfile(os.path.join(path, 'full_res', filename), os.path.join(dest, 'export.jpg')) 
+0

釘着它,謝謝。我正在使用.copyfile()不完整。乾杯:) – SCK

相關問題