Добавить строку в файл если она не найдена

Нужно добавить строку в %PROGRAMDATA%\somedir\file.conf если в нём нет строки начинающейся с "certname=". Строку я получаю таким образом:

pcname = re.sub(r'[^a-zA-Z0-9"-_"]', '', (socket.gethostname()))
rand=str(random.randint(1001,99999))
certname = ("certname="+pcname.lower()+"_"+rand+".test")

Ответы (2 шт):

Автор решения: Namerek
conf_file = Path(os.getenv('PROGRAMDATA')) / 'somedir' / 'file.conf'

pcname = re.sub(r'[^a-zA-Z0-9"-_"]', '', (socket.gethostname()))
rand = str(random.randint(1001, 99999))
certname = ("certname=" + pcname.lower() + "_" + rand + ".test")

with open(conf_file, 'r', encoding='utf-8') as data:
    in_file = re.search(r'^certname=', data.read(), flags=re.M)

if not in_file:
    with open(conf_file, 'a', encoding='utf-8') as data:
        data.write('\n' + certname)
→ Ссылка
Автор решения: Sick_013

Пока ждал ответ, написал такой вариант:

pcname = re.sub(r'[^a-zA-Z0-9"-_"]', '', (socket.gethostname()))
rand=str(random.randint(10001,99999))
certname = ("certname="+pcname.lower()+"_"+rand+".test")
pdata=os.getenv('PROGRAMDATA')

with open(pdata+"/path/to/dir/file.conf", "r+") as f:
   line_found = any("certname=" in line for line in f)
   if not line_found:
       f.seek(0, os.SEEK_END)
       f.write(certname)
→ Ссылка