2017-05-09 4 views
1

CSVファイルに関数を書き込んでいますが、最後の行の途中で途切れています。私はおそらくそれがファイルの終了と関係があると知っていますが、私はそれを正しく行ったと思いました。Python - CSV Writing - 最終行を切り取る

どこが間違っている可能性がありますか?

from itertools import combinations as cb 
import csv 
import numpy as np 


with open("usableReviewScores.csv") as f: 
    reader=csv.reader(f) 
    next(reader, None) # skip header 
    data=[filter(None,i) for i in reader] 

writer = csv.writer(open("alexData1.csv", 'wb')) 

def avgg(x): 
    ll=[float(i) for i in x[1:]] #take review no and convert to float 
    n=len(ll) 
    avg_list=[x[0]] #start result list with ref no. 
    final_list=[] 
    a = 0 
    b = [] 
    c = [] 
    d = [] 

    global min_val 
    global max_val 
    min_val = 0 
    max_val = 0 

    for i in range(4,5): 
     for j in cb(ll,i): 
      # print(j) 
      c = i 
      avg_list.append(sum(j)/i) 
      final_list.append(sum(j)/i) 
      a = sum(final_list)/len(final_list) 
      min_val = min(final_list) 
      max_val = max(final_list) 
      d = np.std(final_list) 

    return (avg_list, "avg", a, "min", min_val, "max", max_val, 
     "Num of reviews", c, "std", d, "Total Reviews", n) 

for x in data: 
    print(avgg(x)) 

for x in data: 
    writer.writerow(avgg(x)) 
+1

あなたが表示しているコードには、字下げの問題があるようです。具体的には、「開いたままで... f:」の行の後 – apomene

+0

ああ、申し訳ありませんが、それはウェブサイトをコードとして受け入れるためのものです。私のツール上にあるものを表示するように編集してみましょう – ScoutEU

+0

OK、書式に一致するようにコードを編集 – ScoutEU

答えて

2

あなたはおそらくファイルのクローズと言います。実際には、出力ファイルをすべて実際に閉じることはありません。

:だから私は、あなたは書き込みのためだけでなく、あなたの入力のための with open(filename) as handle:を使用する必要があり、ファイルが

を閉じていないので、これは、ファイル・システム・キャッシングの症状であり、キャッシュが正常にフラッシュされていないことを推測しています

with open("alexData1.csv", 'wb') as outfile: 
    writer = csv.writer(outfile) 
    for x in data: 
     writer.writerow(avgg(x)) 
+0

完璧、ありがとう。私はそれを試して、それは動作します! :) – ScoutEU

関連する問題