Добавить строку в файл если она не найдена
Нужно добавить строку в %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)