在Python中排序和移动文件

时间:2012-11-11 03:31:29

标签: python

  

可能重复:
  PYTHON: Searching for a file name from an array and then relocating the file

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

1 个答案:

答案 0 :(得分: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))