1

我正在尝试将 csv 文件转换为另一个文件(文件类型无关紧要,因为使用转换后的数据的程序只是像文本文件一样打开它)。

到目前为止,我已经设法将原始 csv 数据转换并打印成我想要的数据结构,但我现在需要将其另存为另一个文件。

import csv
file = open('newData', 'w')

with open('initialData.csv', 'rb') as f:
reader = csv.reader(f, delimiter=',', quotechar='|')
for row in reader:
    print row[13] + ' 1:' + row[0] + ' 2:' + row[1]
    file.write(f)

file.close()

每当我运行它时,我都会收到错误消息:

TypeError: expected a character buffer object

我知道转换 csv 文件没有任何问题,因为当我注释掉 file.write(f) 时打印效果很好。

提前谢谢了!

4

2 回答 2

8

为什么要尝试将原始文件(f对象)写入新文件?你不想写重新格式化的数据吗?

import csv

with open('initialData.csv', 'rb') as f_in, open('newData', 'w') as f_out:
    reader = csv.reader(f_in, delimiter=',', quotechar='|')
    for row in reader:
        print row[13] + ' 1:' + row[0] + ' 2:' + row[1]
        f_out.write(row[13] + ' 1:' + row[0] + ' 2:' + row[1])

编辑:正如 Jon Clements 所建议的,使用上下文管理器进行输出以及缩进修复。

于 2013-01-02T21:37:19.983 回答
0

您正在尝试打印整个 csv 文件的文件句柄。我猜您希望将要打印的文本写到文件中,在这种情况下,只需执行以下操作:

with open('initialData.csv', 'rb') as infile, open('newData.txt') as outfile:
    reader = csv.reader(infile, ...)
    for row in reader:
        outfile.write(row[13] + ' 1:' + row[0] + ' 2:' + row[1])
于 2013-01-02T21:37:54.107 回答