Python:如何从转换后的csv文件创建数据文件?

时间:2013-01-02 21:35:00

标签: python csv

我正在尝试将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)时打印正常。

非常感谢提前!

2 个答案:

答案 0 :(得分: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的建议

编辑,使用上下文管理器输出以及缩进修复。

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