2013-01-02 63 views
1

我想將csv文件轉換爲另一個文件(文件類型無關緊要,因爲使用轉換的數據的程序只是將其打開,就像文本文件一樣)。Python:如何從轉換後的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

請*包括完整的回溯報告python錯誤時,所以我們贏了'不必猜測。 –

+1

您的縮進不正確。請確保您在問題中看到的縮進與您的原始源代碼*完全匹配*。 – cdhowie

+1

修復您的縮進。對於SO代碼示例,最好將您的編輯器設置爲使用空格縮進,而不是製表符。 – millimoose

回答

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]) 

編輯:由喬恩·克萊門茨,輸出使用情況管理器以及+壓痕修復建議。

+0

天哪,我不敢相信我以前沒有看到!謝謝你的幫助! – mrpopo

+1

@mrpopo - 不要爲此付出汗水,我犯這種錯誤的次數超過了我的承認。很容易忽略。 – Blair

+0

幾個變化:'打開('in.csv')爲f,打開('out.csv','wb')爲fo'(充分利用''with'),然後不要縮進'爲' –

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]) 
相關問題