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

Python:如何从转换的csv文件创建数据文件?,python,csv,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 r

我试图将一个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.writef时,它打印得很好


非常感谢

为什么要将原始文件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的建议,使用上下文管理器进行输出+缩进修复。

为什么要尝试将原始文件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的建议,使用上下文管理器进行输出,同时使用缩进修复。

您正在尝试打印整个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])

您正在尝试打印整个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])

请在报告python错误时包含完整的回溯,这样我们就不必猜测太多。您的缩进不正确。请确保您在问题中看到的缩进与原始源代码完全匹配。修复缩进。对于SO代码示例,最好将编辑器设置为使用空格缩进,而不是制表符缩进。此外,在进行此操作时,还应使用with..作为输出文件。另外,不要给他们命名为内置的f文件。使用类似于infile和outfile的内容。您正在使用csv.reader进行输入。为什么不将csv.writer用于输出?请在报告python错误时包含完整的回溯,这样我们就不必猜测太多。您的缩进不正确。请确保您在问题中看到的缩进与原始源代码完全匹配。修复缩进。对于SO代码示例,最好将编辑器设置为使用空格缩进,而不是制表符缩进。此外,在进行此操作时,还应使用with..作为输出文件。另外,不要给他们命名为内置的f文件。使用类似于infile和outfile的内容。您正在使用csv.reader进行输入。为什么不使用csv.writer作为输出?天哪,我不敢相信我以前没有看到过!谢谢你的帮助@波波先生-别担心,我犯这种错误的次数比我愿意承认的要多。这很容易被忽略。两个变化:用open'in.csv'作为f,open'out.csv',wb'作为fo充分利用了你的,然后不要缩进forGosh我不敢相信我以前没有看到过!谢谢你的帮助@波波先生-别担心,我犯这种错误的次数比我愿意承认的要多。这很容易被忽略。有几个变化:将open'in.csv'作为f,将open'out.csv',将'wb'作为fo,以充分利用您的with,然后不缩进for