История изменений
Исправление
emorozov,
(текущая версия)
:
Учитывая, что это конфиг, то есть размер в любом случае не более десятка-другого килобайт, гораздо проще:
- прочитать целиком
- сделать замену в памяти
- записать
Как-то так:
def applyScheme(self):
scheme_directory = self.schemePath.text()
with open(sway_config, "r") as f:
config = f.read()
if "set $theme" in config:
config = re.sub(r'set \$theme.+$', f'set $theme {scheme_directory}')
with open(sway_config, "w") as f:
f.write(config)
Это не совсем эквивалентный код, но, скорее всего, на практике разницы не будет.
Если pathlib
использовать, то можно ещё на пару строк короче и понятнее сделать.
Но и так получилось намного короче и понятнее, и нет ненужного двойного чтения файла.
Edit: перечитал и немного исправил попытавшись лучше понять изначальный замысел автора.
Исходная версия
emorozov,
:
Учитывая, что это конфиг, то есть размер в любом случае не более десятка-другого килобайт, гораздо проще:
- прочитать целиком
- сделать замену в памяти
- записать
Как-то так:
def applyScheme(self):
scheme_directory = self.schemePath.text()
with open(sway_config, "r") as f:
config = f.read()
if "set $theme" in config:
config = config.replace('set $theme', f'set $theme {scheme_directory}')
with open(sway_config, "w") as f:
f.write(config)
Это не совсем эквивалентный код, но, скорее всего, на практике разницы не будет.
Если pathlib
использовать, то можно ещё на пару строк короче и понятнее сделать.
Но и так получилось намного короче и понятнее, и нет ненужного двойного чтения файла.