2015-11-09 2 views
0

Мне было интересно, есть ли способ редактировать эти строки файла, который содержит определенные символы. Что-то вроде этого:Строка редактирования Python, содержащая определенные символы

file.readlines() 
for line in file: 
    if 'characters' in line: 
     file[line] = 'edited line' 

Если это имеет значение: Я использую Python 3.5

+0

Вы также можете использовать модуль linecache в python. Найдите его, но я верю, что первый ответ будет работать. – python

ответ

1

Я думаю, что вы хотите что-то вроде:

lines = file.readlines() 
for index, line in enumerate(lines): 
    if 'characters' in line: 
     lines[index] = 'edited line' 

Вы не можете редактировать файл напрямую , но вы можете записать измененный lines поверх оригинала (или, безопаснее, записать во временный файл и переименовать его после его проверки).

+0

Этот будет работать. Отличное решение – python

+0

Я сделал то, что вы предложили, но, похоже, не правильно определял линию. Я проверил, и строка, которую я искал, была очень большой в файле, но, похоже, меня не изменила строка. Я положил инструкции print в оператор if, чтобы проверить, даже ли он нашел символы, и оказалось он не обнаружил персонажей. Я добавил еще: print («Персонажи не найдены»), которые также не выполнялись. Есть ли какие-либо подсказки относительно того, что может быть неправильным? Мой код можно найти здесь: https://gyazo.com/529ec940d14e9915a237de670d89e178. Это просто пишет строку «0». – Jonathan

0

Вы можете использовать tempfile.NamedTemporaryFile для создания временного файлового объекта и написать свои строки в нем, используя модуль shutil, чтобы заменить файл temp на ваш предыдущий файл.

from tempfile import NamedTemporaryFile 
import shutil 

tempfile = NamedTemporaryFile(delete=False) 
with open(file_name) as infile,tempfile: 
    for line in infile: 
     if 'characters' in line: 
      tempfile.write('edited line') 
     else: 
      tempfile.write(line) 

shutil.move(tempfile.name, file_name)