0

重複の可能性:
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)
4

1 に答える 1

1

以下のコードは、探しているものを実装しています。行われた変更に関するいくつかのコメント:

  • 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))
于 2012-11-11T04:21:52.990 に答える