2016-09-12 3 views
-4

Я пытаюсь найти файл для строки, содержащей определенный текст, а затем заменить всю строку новой строкой.Заменить строку, содержащую строку с Python

Я пытаюсь использовать:

pattern = "Hello" 
file = open('C:/rtemp/output.txt','w') 

for line in file: 
    if pattern in line: 
     line = "Hi\n" 
     file.write(line) 

Я получаю сообщение об ошибке сказав:

io.UnsupportedOperation: not readable 

я не уверен, что я делаю неправильно, пожалуйста, может кто-то помочь.

+1

http://stackoverflow.com/questions/39086/search-and-replace-a -line-in-a-file-in-python или это http://stackoverflow.com/questions/17140886/how-to-search-and-replace-text-in-a-file-using-python – MooingRawr

+4

Вы открывая файл только для записи. Для этого вам нужно сделать это: http://stackoverflow.com/questions/6648493/open-file-for-both-reading-and-writing – Andy

ответ

2

Вы открыли файл с символом «w», что означает, что вы собираетесь писать на него. Затем вы попытаетесь прочитать это. Так что ошибка.

Попробуйте прочитать этот файл и откройте другой файл для записи вашего вывода. При необходимости, когда это будет сделано, удалите первый файл и переименуйте файл вывода (temp) в имя первого файла.

+0

Спасибо, что решил – ChrisG29

0

Вы должны быть очень новой для питона^_^

Вы можете написать это:

pattern = "Hello" 
file = open(r'C:\rtemp\output.txt','r') # open file handle for read 
# use r'', you don't need to replace '\' with '/' 
result = open(r'C:\rtemp\output.txt', 'w') # open file handle for write 

for line in file: 
    line = line.strip('\r\n') # it's always a good behave to strip what you read from files 
    if pattern in line: 
     line = "Hi" # if match, replace line 
    result.write(line + '\n') # write every line 

file.close() # don't forget to close file handle 
result.close() 
Смежные вопросы