2011-04-27 112 views
0

我正在研究一個小項目,其中一個步驟是在csv文件上寫入數據列表。 我正在循環訪問列表,並獲取特定數據並將其寫入csv。 問題是,當被處理的寫入操作它消除了CSV file.My CSV寫入方法的以前的條目如下: 和示例使用python更新csv文件

def csv_writer(data_list,file_path): 
    import csv 
    file_p = open(file_path, "wb") 
    write_pattern = csv.writer(file_p, delimiter=",", quotechar=",") 
    write_pattern.writerow(data_list) 
    file_p.close() 

一個例子的數據列表是:

data_list = ['a', '', 'a', 'a', 'd', 'e'] 

我想有文件中的數據如下:

a,,a,d,e 
a,b,c,d,e 
a,g.j,l,m 

在此先感謝。

+1

Python文檔的救援! http://docs.python.org/library/functions.html#open – jathanism 2011-04-27 17:15:47

+0

請更改您的句子,以便可以理解:_「我的目標是從循環中返回的每個data_list」_從您的例子中,我知道你想在文件的所有內容之前插入data_list。如果不是這樣,這意味着你將不得不努力用可理解的方式表達你的問題 – eyquem 2011-04-27 17:50:51

+1

@eyquem我已經改變了它,希望它能很好地表達問題:) – mushfiq 2011-04-27 17:53:34

回答

5

也許在追加模式下打開文件?

file_p = open(file_path, "ab") 
+0

它的工作!非常感謝,我正在尋找這種模式,但不幸的是錯過了,最後想到,我將不得不定製方法這個東西。 – mushfiq 2011-04-27 17:39:37

+0

太棒了,很高興你能工作! – samplebias 2011-04-27 17:41:02

0

當你打開文件時,試着打開它來追加,就像這樣。

def csv_writer(data_list,file_path): 
    import csv 
    file_p = open(file_path, "a") 
    write_pattern = csv.writer(file_p, delimiter=",", quotechar=",") 
    write_pattern.writerow(data_list) 
    file_p.close() 
0

定界符quotechar必須優選作爲選作爲不同

正如我理解的問題,其目的是前一個CSV文件的所有內容,以插入一個新行。這裏的代碼要做到這一點:

import csv 

def csv_writer(data_list,file_path): 
    file_p = open(file_path, "rb+") 
    reader_pattern = csv.reader(file_p, delimiter=",", quotechar="$") 
    write_pattern = csv.writer(file_p, delimiter=",", quotechar="$") 

    content = list(reader_pattern) 

    file_p.seek(0,0) 
    write_pattern.writerow(data_list) 
    write_pattern.writerows(content) 
    file_p.truncate() 
    file_p.close() 


data_list = ['a', '', 'a', 'a', 'd', 'e'] 


csv_writer(data_list,'Copie de zozou.txt')