2015-06-14 58 views
0

目前,我已经有了这个功能:如何从CSV文件中读取单个行?

def writer(file_name) 
    open_file = open(file_name,"r+", newline='') 
    csv_output = csv.writer(open_file) 
    csv_output.writerow(student) 
    open_file.close() 

其中student是:

"string_1","string_2",int 

我期待通过文件先阅读和检查"string_1",我正在写匹配已经编写的任何"string_1",但是我找不到一个内置函数,可以让我读取每行并将其存储为列表。

+3

你没发现'csv.reader'? ? – Daniel

+0

这是不是已经在文件中的行,你会经常做的事吗?由于逐行读取文件并跳过已存在的任何值,对于只能偶尔添加的短文件都有效,但如果您做了很多操作,它的性能会很差。如果您想要更高效的算法,您可能需要将整个文件读入字典并在写入任何额外的行之前检查该字典。 – Blckknght

回答

0

首先,你必须打开文件进行读取,经过由线和返回文件中的行,如果“STRING_1”中找到:

def append_student(file_name, student) 
    with open(file_name, "r") as f: 
     for line in csv.reader(f): 
      if line[0] == student[0]: 
       return 
    with open(file_name, "a") as f: 
     csv.writer(f).writerow(student)