2011-04-27 56 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')