2012-11-11 66 views
0

移動文件可能重複:
PYTHON: Searching for a file name from an array and then relocating the file排序和在Python

我是新來的Python和真的可以使用一些幫助。我有一大堆我正在排序的圖像。我需要每260張圖片(例如:0,260,520,780等)。然後我需要將這些圖像重新定位到新文件夾。這裏是我的代碼到目前爲止:

import os, os.path, sys, shutil 
root = '.' 
dst = "/Users/xx/Desktop/newFolder" 

print "/////// F I N D__A L L__F I L E S __W I T H I N __R A N G E ///////////////////" 


selectPhotos = range(260, 213921) 
print selectPhotos[::260] 
print "/////// L I S T__O F __A L L __J P E G S ///////////////////" 


for files in os.listdir("/Users/xx/Desktop/spaceOddy/"): 
    #if files.endswith(".jpg"): 
    # print files 


    if files.startswith(('00260', '00520', '00780')): 
     print files 

     #shutil.copyfile(files, "/Users/xx/Desktop") 
     shutil.move ("files", dst) 
+2

什麼是你的問題? –

回答

1

以下代碼實現您正在尋找。上所做的更改需要注意幾點:

  • 使用os.rename代替shutil.moveshutil.move則多爲遞歸移動目錄不是單個文件。
  • glob是一個偉大的模塊,它可以使你的代碼更短,更易於閱讀,而不是os.listdir
  • 模運算符%是完美的,只要你想要做的事,以每X項目。在你的情況每第260項

代碼

src = '/Users/xx/Desktop/spaceOddy/' 
dst = "/Users/xx/Desktop/newFolder/" 
EVERY = 260 
for i, file in enumerate(glob.glob(src + '*.png')): 
    if i % EVERY == EVERY - 1: 
     print 'moving', file 
     os.rename(file, dst + os.path.basename(file))