2017-01-02 22 views
-1

データをCSVファイルに書き込もうとしています。CSVファイルの行にデータを書き込む方法

私はこのようにそれを書いた:
617.png 0,988.png 0,850.png 0,824.png 0,536.png 0

しかし、私はこの

617.png 0 
988.png 0 
850.png 0 
824.png 0 
536.png 0 

すべてのヘルプなどのファイルにデータを書き込むようにしたいですか?これは私のコードです:

import os 
import cvutils 
import csv 
dir_unknown = 'UntitledFolder' 
trainingSet='/home/irum/Desktop/CLUSTERING/UntitledFolder/UntitledFolder1' 
#Create CSV File 
images_names = [] 
SEPARATOR=" " 

print"start" 
label = 0 
for (dirname, dirnames, filenames) in os.walk(dir_unknown): 
    print"dd" 
    for subdirname in dirnames: 
     subject_path = os.path.join(dirname, subdirname) 
     print "subject_path",subject_path 
     for filename in os.listdir(subject_path): 
     abs_path = "%s" % (filename) 
     images_names.append("%s%s%d" % (abs_path,SEPARATOR,label)) 
     with open('class_train22', 'wb') as myfile: 
      wr = csv.writer(myfile,delimiter=',',quotechar='\\',quoting=csv.QUOTE_MINIMAL, lineterminator='\r\n') 
      wr.writerow(images_names) 
     label = label + 1 
+1

これを実行します。images_name.append( "%s%s%d \ n"%(abs_path、SEPARATOR、label)) ' – Prajwal

+0

あなたはすべてのファイル名を一度に書きます。ファイル名を繰り返し処理し、ファイル名ごとに 'writerow' **を1回呼び出すコード内の場所を見つける必要があります** –

+0

' images_names'のリストを作成するのではなく、 'for filename in os 'を逆にする方が簡単です。 myfileとして '' class_train22 ''、 'wb')を開く** 1)**書き込みモードでファイルを開く** 2)**それぞれに1行を書き込む'filename'です。 –

答えて

1

まず、あなたは(追加ではなく、切り捨てる)書き込み用の同じファイルを開いているので、あなたのcsvファイルは、1行のみを持つことになります。

最初にwithブロックを作成し、ファイルを開き、csvオブジェクトを一度作成すると、他のすべてのステートメントはwithブロックに移動する必要があります。

csvファイルのスペースを区切る必要があります。スペースは、ファイル名に、次に何か

with open('class_train22', 'wb') as myfile: # python 2 only 
#with open('class_train22', 'w',newline='') as myfile: # python 3 only 

    wr = csv.writer(myfile,delimiter=' ',quotechar='\\',quoting=csv.QUOTE_MINIMAL) 

を行うリストとして、ファイル名+インデックスのカップルごとに1行を記述する必要が見つからない場合は引用することは行われます。 csvモジュールがあなたのための分離/引用を処理します。文字列をフォーマットする必要はありません。

内側のループは次のようになります。

for (dirname, dirnames, filenames) in os.walk(dir_unknown): 
     for subdirname in dirnames: 
      subject_path = os.path.join(dirname, subdirname) 
      for filename in os.listdir(subject_path): 
       wr.writerow([filename,label]) 
       label += 1 

あなたは(その使用は何)ここのに対し、あなたが買ってあげるどこでも0を期待しているように見えるので、あなたはただ、labelの増分を調整する必要がありますすべてのdirのすべてのファイルの絶対数の増分。

関連する問題