我正在尝试从一个读取并写入第二个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
行,因此在第一次迭代后返回错误。问题在哪里?
答案 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