2017-12-11 7 views
1
import os, unicodecsv as csv 
# open and store the csv file 
IDs = {} 
with open('labels.csv','rb') as csvfile: 
    timeReader = csv.reader(csvfile, delimiter = ',') 
    # build dictionary with associated IDs 
    for row in timeReader: 
     IDs[row[0]] = row[1] 
# move files 
path = 'train/' 
tmpPath = 'train2/' 
for oldname in os.listdir(path): 
    # ignore files in path which aren't in the csv file 
    if oldname in IDs: 
     try: 
      os.rename(os.path.join(path, oldname), os.path.join(tmpPath, IDs[oldname])) 
     except: 
      print 'File ' + oldname + ' could not be renamed to ' + IDs[oldname] + '!' 

this csvファイルに従ってファイルをソートしようとしています。しかし、ファイルには同じ名前のIDが多数含まれています。同じ名前のファイルがすでにディレクトリに存在する場合、同じ名前のファイルを1つのフォルダに移動するか、ファイルの前に番号を追加する方法はありますか?Python:csvファイルのエントリに従ってファイルをソートするプログラム

Example- 

id     name 
0hja1.jpg  golden_retreiver 
0121221122ld.jpg  black_hound 
0232113222kl.jpg  golden_retreiver 
0213113jjdsh.jpg  alsetian 
05hkhdsk1233a.jpg  black_hound 

は、私が実際には1つのフォルダなどにgolden_retreiverに対応するIDを持つすべてのファイルを移動します。

+1

私は混乱しています。 1つのフォルダだけをループしています。重複はどのようにありますか?あなたは例を共有できますか? –

+0

https://docs.python.org/3/library/os.path.html#os.path.existsを使用して項目が存在するかどうかを確認します。 –

+0

大丈夫私の悪い、例を共有します –

答えて

0

はあなたが記述するものに基づいて、ここに私のアプローチです:データ・ファイル内のすべての行については

import csv 
import os 

SOURCE_ROOT = 'train' 
DEST_ROOT = 'train2' 

with open('labels.csv') as infile: 
    next(infile) # Skip the header row 
    reader = csv.reader(infile) 
    seen = set() 
    for dogid, breed in reader: 
     # Create a new directory if needed 
     if breed not in seen: 
      os.mkdir(os.path.join(DEST_ROOT, breed)) 
      seen.add(breed) 

     src = os.path.join(SOURCE_ROOT, dogid + '.jpg') 
     dest = os.path.join(DEST_ROOT, breed, dogid + '.jpg') 

     try: 
      os.rename(src, dest) 
     except WindowsError as e: 
      print e 

ノート

  • 、私は先の品種のディレクトリを作成します。私はセットseenを使用して、各ディレクトリを1回だけ作成することを確認します。
  • その後、ファイルを所定の場所に移動する手間がかかります
  • 可能な移動エラーの1つ:ファイルがソースディレクトリに存在しません。この場合、コードは単にエラーを出力して無視します。
+0

あなたは私の日を作りました –

関連する問題