У меня есть небольшая догадка, что ваши отступы выключены.Попробуйте заменить свой блок кода этим.
from contextlib import nested
with nested(open('/etc/rc.conf', 'r'), open('/etc/rctmp', 'w')) as managers:
rc_file, tmp_file = managers
for line in rc_file:
if 'DAEMONS' in line and '#' not in line and 'dbus' not in line:
line = line.split('=')[1].strip()
line = line[1:len(line) - 1]
line = line.split()
tmp = line[1:]
line = [line[0]]
line = ' '.join(line + ['dbus'] + tmp)
line = 'DAEMONS = (' + line + ')'
tmp_file.write(line)
РЕДАКТИРОВАТЬ: ответ @ dappawit также является правильным, так как, когда строка заканчивается тем, что удовлетворяет условию if
, ваш код будет перекрывать переменную tmp
, привязав к ней строку, а затемпосле выхода из условного блока будет выдана еще одна ошибка в строке string object doesn't have a write method
.