Python - CSV写作 - 切断最后一行

时间:2017-05-09 11:08:54

标签: python csv

我正在为CSV文件(正在运行)编写一个函数,但是它在最后一行中间切断了一半。我知道这可能与关闭文件有关,但我认为我做得正确。

任何可能出错的建议?

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 个答案:

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