2015-05-20 2 views
0

Я связываюсь, чтобы сделать программу python, чтобы помочь мне внести простые изменения в файл конфигурации. Я хочу иметь возможность прочитать файл, заменить раздел файла и затем записать изменения. Одна из проблем, которые я испытывал, заключается в том, что существует несколько строк, которые являются одинаковыми. Например, файл конфигурации выглядит следующим образом:Заменить блок CSS текста в файле Python

/* Panel */ 

#panel { 
    background-color: black; 
    font-weight: bold; 
    height: 1.86em; 
} 
#panel.unlock-screen, 
#panel.login-screen { 
    background-color: transparent; 

есть две строки, которые содержат цвет фона: поэтому я не в состоянии проверить, если строка равна строке, потому что, если бы я был заменить каждую строку, содержащую background- цвет: я получаю нежелательные изменения. Также я не хочу полагаться на индекс строки, потому что, когда строки файла конфигурации добавляются или удаляются, они будут меняться. Любая помощь будет оценена!

+0

Вы могли бы использовать более проверить заявления в зависимости от окружающего текста переменной, которую вы хотите изменить. – ZdaR

+3

Какие изменения вы хотите сделать, что отличает эти две строки и т. Д.? – TigerhawkT3

+1

В этом примере, какая из двух строк является той, которую вы хотите заменить? Каков общий критерий? –

ответ

0

Похоже, вы пытаетесь иметь дело с файлами CSS. Для того, чтобы правильно разобрать этот формат файла, вам нужно что-то вроде cssutils:

import cssutils 

# Parse the stylesheet, replace color 
parser = cssutils.parseFile('style.css') 
for rule in parser.cssRules: 
    try: 
     if rule.selectorText == '#panel': 
      rule.style.backgroundColor = 'blue' # Replace background 
    except AttributeError as e: 
     pass # Ignore error if the rule does not have background 

# Write to a new file 
with open('style_new.css', 'wb') as f: 
    f.write(parser.cssText) 

Update

Я сделал изменения в коде, и теперь только изменить фон для #panel

+0

Это может сработать, с точки зрения моего примера, как узнать, изменяю ли я фон #panel {} –

+0

См. Обновление. В общем, вы можете поэкспериментировать для себя, попробовав код в интерпретаторе. До сих пор я ничего не знал о cssutils. –

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