2013-08-22 1 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

Вы * не можете * переписать определенные строки в файл. Если строка, которую вы пишете, длиннее, то вы перезаписываете начало следующей строки, если она короче, тогда вы оставите некоторый барахло. Вы должны переписать строку другой строкой с * точно такой же длиной. Также вы не можете удалить строку. Просто перепишите весь файл. (также обратите внимание, что в вашем примере кода вы * не * переписываете строку, которую вы только что прочитали. Вы переписываете строку * follow *, в итоге вы потеряете половину файла). – Bakuriu

+0

@ Бакуриу, что делать, означает переиздание? – caesar

+0

like file.clear()?/ – caesar

ответ

1

Поскольку вы использовали .split в строке, вы работаете со списком строк. Хотя строка является концептуально просто списком символов, она по-прежнему не является списком строк.

Попробуйте использовать метод .join строки, чтобы присоединиться к массиву, прежде чем записать его, например:

'' .join ([ "один, два"]) == "Onetwo"

+0

благодарит за комментарии. Есть ли способ записать его в файл «[один, два]»? – caesar

+1

Рассмотрите '' [% s] "% (','. Join ([" one "," two "]))' – Phoshi