2015-04-18 15 views
0

Я хотел бы сделать так, чтобы он открыл alan.txt, ищите текст для всего экземпляра academary_tehologian, и если он найден, добавьте к нему слово «test». когда я пробовал это делать так:Сценарий не записывается в файл

## Script 
with open('alan.txt', 'r+') as f: 
for line in f: 
    if "scholarly_theologian" in line: 
     f.write("test") 

ничего не писал. Я в Windows 8.1

+0

Это будет просто перезаписать следующие четыре символа с помощью «теста». – cdarke

+0

У файла есть строка с «ученый-теологом», я ее протестировал. – user1666375

+0

Хорошо, так что я положил «\ ntest»? Создает новую строку со словом test? – user1666375

ответ

1

Переписанный ответ, потому что последний был неправильным.

Если вы хотите прочитать строки, которые вы должны поставить .readlines() после открытый (...) или х. Затем вы можете вставить «тест».

## Script 
with open('alan.txt', 'r') as f: 
    lines = f.readlines() 

for i in range(len(lines)): 
    if "scholarly_theologian" in lines[i]: 
     lines[i] = lines[i] + "\ntest" 

with open('alan.txt', 'w') as f: 
    f.write("\n".join(lines)) 
+0

фраза, которую я ищу, является ученым-теологом », даже когда я это делаю, она все еще не работает, но спасибо за ответ на мой вопрос. – user1666375

+0

Полностью переписан ответ. – manicphase

+1

Используйте' xrange (len (lines)) 'вместо' range (lines) ' –

1

Вы не можете изменить файлы, как это. Вы можете добавлять только к нему, писать символы вместо других или переписывать их полностью. См. How do I modify a text file in Python?.

Что вам нужно сделать, это создать другой файл с нужным контентом.

EDIT:

ответ Claudio имеет код для того, что я предложил. Он имеет преимущество (по сравнению с кодом manicphase) не хранить весь файл в памяти. Это важно, если файл длинный. С другой стороны, ответ manicphase имеет преимущество не создавать второй файл. Он перезаписывает оригинал. Выберите тот, который соответствует вашим потребностям.

0

Это должно сделать трюк:

with open('output.txt', 'w') as o: 
    with open('alan.txt', 'r') as f: 
     for line in f: 
      o.write(line) 
      if line.find('scholarly_theoligian'): 
       o.write('test') 

Как Ella Shar упоминалось, вам необходимо создать новый файл и добавить новое содержание в нем.

Если работа с двумя файлами неприемлема, следующим шагом будет удаление входного файла и переименование выходного файла.

Смежные вопросы