2014-04-16 46 views
0

我試過用這個:Deleting a line from a file in Python。我改變了代碼有點適合我的目的,像這樣:如何從Python中的文件中刪除一行

def deleteLine(): 
    f=open("cata.testprog","w+") 
    content=f.readlines() 
    outp = [] 
    print(f.readline()) 
    for lines in f: 
     print(lines) 
     if(lines[:4]!="0002"): 
     #if the first four characters of a line do not equal 
      outp.append(lines) 
    print(outp) 
    f.writelines(outp) 
    f.close() 

的問題是,整個文件被由空字符串替換和OUTP等於一個空列表。我的文件不是空的,我想刪除以「0002」開頭的行。打印f.readline()給了我一個空字符串。有沒有人有任何想法如何解決它?

由於提前,

回答

1

你在錯誤的方式打開文件: 「W +」。此模式用於寫入和讀取,但首先它被截斷。首先打開文件閱讀。如果文件不是很大,則將其讀入內存,然後轉換並通過在寫入模式下打開文件進行保存。

+0

此外,一個文件只能迭代一次。所以'content = f.readlines()'這一行需要被移除,特別是因爲'content'沒有做任何事情。 –

1

與鏈接問題相比,您完全更改了文件處理。在那裏,文件首先被打開以讀取內容,關閉然後打開以寫入處理的內容。在這裏,你打開它,你首先使用f.readlines(),所以文件的所有數據都在內容中,文件指針位於文件的末尾。

+0

我把它放在調試,但我沒有意識到它把指針放在文件的末尾。謝謝。我會投票,但我沒有聲望。 :( – JetMashKangaroo