Simplify sed_i by using fileinput module

This also fixes the problem with the owner:group being set to root
This commit is contained in:
Anders Ingemann 2013-11-21 16:45:29 +01:00
parent 2b05fe977d
commit a60715e710

View file

@ -44,17 +44,7 @@ def log_call(command, stdin=None):
def sed_i(file_path, pattern, subst):
from tempfile import mkstemp
from shutil import move
from os import close
import os
import fileinput
import re
temp_fd, temp_path = mkstemp()
mode = os.stat(file_path).st_mode
with open(temp_path, 'w') as new_file:
with open(file_path) as old_file:
for line in old_file:
new_file.write(re.sub(pattern, subst, line))
close(temp_fd)
os.chmod(temp_path, mode)
move(temp_path, file_path)
for line in fileinput.input(files=file_path, inplace=True):
print re.sub(pattern, subst, line),