2013-08-22 237 views
0

我試着逐行閱讀一個文件,並且對於我閱讀的每一行,我試圖將它分開,之後我想把它寫在我得到它的地方。爲了做到這一點,我寫這樣的代碼:逐行讀取文件,修改該行並將該行寫入同一文件。 Python

fst_file=open(fst_text,"r+") 
    line=fst_file.readline() 

    while line: 
     temp=(line.split('CONFIG_',1)[1]).split('PATH=') 
     temp[1]=temp[1].replace('\n','') 
     fst_file.write(temp)   
     line=fst_file.readline() 

    fst_file.close() 

但是我有這樣的錯誤:

File "test.py", line 84, in <module> 
    branchName() 
    File "test.py", line 75, in branchName 
    fst_file.write(temp)   
TypeError: expected a character buffer object 

有沒有人幫我嗎?

+1

您*不能*重寫文件中的特定行。如果你寫的這行更長,那麼你會覆蓋下一行的開始,如果它更短,那麼你會留下一些垃圾。您必須用另一條長度恰好相同的線覆蓋一條線。你也不能刪除一條線。只需重新編寫整個文件即可。 (還要注意,在你的示例代碼中,你*不會*重寫剛剛讀取的行,你正在覆蓋* following *行;最終會丟失一半這樣的文件)。 – Bakuriu

+0

@Bakuriu什麼意思是重寫? – caesar

+0

like file.clear()?/ – caesar

回答

1

因爲您使用了.split就行了,您正在處理一個字符串列表。雖然字符串在概念上只是一個字符列表,但它仍然不是字符串列表。

嘗試使用字符串。加入方法你寫出來之前,例如加入你的數組:

「」。加入([「一,二」])==「ONETWO」

+0

感謝您的評論。有沒有辦法將它寫入文件「[一,二]」? – caesar

+1

考慮''[%s]「%(','。join([」one「,」two「]))' – Phoshi