Найдите подстроку в строке, а затем замените эту строку в текстовом файле - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь написать сценарий, который сначала сделает резервную копию текстового файла, затем откроет его и выполнит поиск строки с указанной строкой / подстрокой, а затем заменит эту строку новой строкой / строкой.

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

Пока что у меня есть это, но он будет только добавить новое значение к существующему, оно не заменит его. Был бы признателен за помощь.

import os
import shutil

shutil.copy2('C:/file_location/values.txt', 'C:/file_location/values.txt.backup')

with open('C:/file_location/values.txt') as values: 
  updated_values = values.read().replace('SystemOption', 'SystemOption = 1')

with open('C:/file_location/values.txt', "w") as new_values:
    new_values.write(updated_values)

SystemOption = 0 после запуска скрипта я получаю: SystemOption = 0 = 1

Желаемый эффект после запуска скрипта: SystemOption = 1

Итак, я хочу изменить с 0 на 1.

Проблема в том, что в файле значение может быть либо 0, либо 1, поэтому я хочу изменить всю строку, чтобы убедиться, что значение равно 1 после скрипт.

Ответы [ 2 ]

0 голосов
/ 16 июня 2020
import shutil

shutil.copy2('C:/file_location/values.txt', 'C:/file_location/values.txt.backup')

with open('C:/file_location/values.txt') as values:
    updated_values = values.read()
    if 'SystemOption' in updated_values:
        updated_values = updated_values.replace('SystemOption = 0', 'SystemOption = 1', 1)

with open('C:/file_location/values.txt', "w") as new_values:
    new_values.write(updated_values)
0 голосов
/ 16 июня 2020

Вы можете попробовать использовать re module in python

with open('C:/file_location/values.txt') as values: 
    updated_values = values.read()
    updated_values = re.sub('SystemOption = 0', 'SystemOption = 1',updated_values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...