Я пытаюсь написать скрипт на python, который будет принимать файл (назовем его input.txt
) и искать строку, которая заканчивается текстом «перейти к первой точке периметра». Затем необходимо заменить эту строку на следующую после нее строку и заменить следующую строку первой строкой. Остальная часть файла должна быть неизменной. Есть множество случаев, когда это должно происходить в файле.
Мой мыслительный процесс был таким. Ищите линию, которая заканчивается «перейти к первой точке периметра». Как только код найдет его, он сохранит строку как переменную, а затем удалит строку из файла. Затем, если следующая строка заканчивается «восстановить слой Z» (что всегда будет иметь место со следующей строкой), необходимо добавить ранее удаленную строку после этой строки.
Вот что япытаюсь сделать:
- Открыть файл (
'input.txt'
). - Поменять местами каждое вхождение двух последовательных строк, где
- Первая строкаоканчивается на:
'move to first perimeter point'
- Вторая строка оканчивается на:
'restore layer Z'
- Примечание : известно, что все такие вхождения всегда будут происходить парами (первая-втораялинии размещены последовательно).
- Запишите это изменение в новый файл (
'output.txt'
).
Я попытался собрать это вместе, используя python. Я играл с python много лет назад и смутно помню, как им пользоваться. Это бросило ошибку. Вот мой код после внесения исправлений, предложенных в разделе комментариев: (a) str.endwith --> str.endswith
, (b) For --> for
. Любые предложения будут очень полезны и приветствуются.
inp = open('input.txt','r')
out = open('output.txt', 'w')
prev = inp.readline()
for line in inp:
if line.endswith('move to first perimeter point')
prev = line
if line.endswith('restore layer Z')
out.write(line)
out.write(prev)
else:
out.write(prev)
prev = line
out.write(prev)
out.close()
inp.close
Я ожидал, что входной файл останется неизменным, пока создается новый выходной файл. Вместо этого ничего не произошло.
Спасибо за вашу помощь заранее! Я очень новичок в этом.