2015-06-14 62 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)