Python CSV阅读器不会跳过第一行

时间:2017-05-01 13:36:36

标签: python python-2.7 csv

我正在尝试从一个读取并写入第二个CSV文件。问题是我需要在读取之前知道输入CSV文件中有多少行。

with open('csv/file.csv') as f:
    with open('output/output_{}.csv'.format(time.strftime("%Y%m%d-%H%M%S")), 'wb') as o:
        reader = csv.DictReader(f)
        reader.fieldnames.append('VAT added')
        rows = sum(1 for _ in reader)
        f.seek(0)
        writer = csv.DictWriter(o, fieldnames=reader.fieldnames)
        writer.writeheader()
        for n,line in enumerate(reader):
            print line
            print '{} lines remaining'.format(rows-n)
            code = line['number'].strip()
            ...
            writer.writerow(line)

问题是它读取header行,因此在第一次迭代后返回错误。问题在哪里?

1 个答案:

答案 0 :(得分:0)

  

问题 ...首次迭代后返回错误

你不知道你得到了哪个错误,但我明白了 TypeError:' str'不支持缓冲区接口

原因是这行代码:

with open('output/output_{}.csv'.format(time.strftime("%Y%m%d-%H%M%S")), 'wb') as o:

不要以二进制模式csv打开wb文件,更改为w,例如。

with open('output/output_{}.csv'.format(time.strftime("%Y%m%d-%H%M%S")), 'w') as o:

使用Python测试:3.4.2