s0rgПишите обратно - как записать в нужную строку?
Запись - проходите по элементам словаря склеиваете ключ + ‘ = ’ + значение, добавляете перевод строки, пишите обратно.
s0rgПишите обратно - как записать в нужную строку?
Запись - проходите по элементам словаря склеиваете ключ + ‘ = ’ + значение, добавляете перевод строки, пишите обратно.
aivsну например так:
Пишите обратно - как записать в нужную строку?
f.write('\n'.join( [ '%s = %s' % (k,v) for k, v in my_dict.iteritems()] ) )
aivsУчитывая, что у вас это уже реализовано на sed я в этом сильно сомневаюсь.
От регэкспа изначально отказался, считая, что есть более простой способ
#!/usr/bin/python
# parser rc.conf
import re
# Считываем все строки в lines, правим нужную строку и записываем все в файл
#Открываем файл на чтение-запись
config = open('rc.conf' , 'r')
# Cчитываем все строки в lines
lines = config.readlines()
config.close()
# Ищем нужную строку
# номер строки в count
count = 0
for line in lines:
count += 1
# Ищем строку начинающуюся на gateway
if re.match("^gateway", line):
# Чтобы попасть на нужную строку, нужно вычесть 1, пока неосознал...
count -=1
# Заменить строку номер count на свою
lines[count] = "gateway= 192.168.1.2\n"
# Записываем все строки в файл
with open('rc.conf', 'w') as config:
config.writelines(lines)
import re
fname = 'rc.conf'
content = open(fname).read()
for name,value in (("interface", "eth0"), ("address", "192.168.1.100"),
("netmask", "255.255.255.0"), ("gateway", "192.168.1.1")):
content = re.sub(r'(%s)=.*' % name, r'\1=%s' % value, content)
with open(fname, 'w') as config:
config.write(content)
re.sub(r'(%s)=.*' % name, r'\1=%s' % value, content)
aivsЧто именно непонятно? Это регексп, меняет выражения типа <name>=<что угодно до конца строки> на <name>=value
Спасибо, если не затруднит, можете прокомментировать:re.sub(r'(%s)=.*' % name, r'\1=%s' % value, content)
Комментарии Ваш вариант не обходит!попробуйте так: content = re.sub(r'^(%s)=.*' % name, r'\1=%s' % value, content, flags=re.M)