Python中的文件排序和移动

Python中的文件排序和移动,python,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

可能重复:

我是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)

下面的代码实现了您要查找的内容。关于所做更改的几点意见:

  • 使用
    os.rename
    而不是
    shutil.move
    shutil.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))