2013-10-04 53 views
-1

我一直在試圖寫一個簡單的東西來管理項目。我堅持的是編輯功能。Python,編輯csv,寫入問題

def edit_assignment(): 
check() 
if os.path.exists(fdir):  
    list_assignment() 
    file = open(fdir,'r+') 
    list = file.readlines() 
    line_edit = int(raw_input('line to edit: ')) 
    list[line_edit] = 'x' 
    new_list = "\r\n".join(list) 
    file.write(new_list) 
    file.close() 
else: 
    print 'error' 

這是相關部分。

當我運行這個時,會發生什麼是,而不是重新寫入文件,它會混合兩者。我不明白我做錯了什麼,任何幫助將不勝感激。

+0

修復您的縮進 –

+0

永遠不要調用變量「list」 –

+0

什麼意思是「融合兩者」? –

回答

1

你可以做這樣的事情:

if os.path.exists(fdir): 
    lines = open(fdir, "r").readlines() 
    line_no = int(raw_input("line: ")) 
    lines[line_no] = "x" 
    open(fdir, "w").write("".join(lines)) 
else: 
    print "error" 
0

您正在使用「R +」用於讀取和寫入打開你的文件。在讀取現有文件後,所有進一步的寫入操作將發生在文件指針的位置 - 這是文件的結尾。這就是爲什麼你得到檢測到的行爲。

選項:

  • 打開文件,讀取線,關閉文件,打開寫的文件,寫入線,關閉文件

  • 使用fp.seek(0)將文件指針重新設置迴文件的位置0(開始)