Хочу спросить на счет данной ошибки, из за чего она возникает, его я ошибся или совсем что то не верно(что скорее всего). Суть задачи скрипта = есть конфиг, в него надо вносить изменения пользователем через input. Нужно чтобы была проверка на параметры в которых только путь до папки, и только да\нет можно написать (+ еще скорее всего надо для параметров только с цифрами сделать проверку, но я пока незнаю как, если будет оказана помощь еще и в этом, буду очень благодарен). Дак вот я сделал функция на проверку имеется ли папка в системе, создал словарь со всеми параметрами и их значениями (если делать только для проверки папки, все работает хорошо, проблема именно в параметрами да\нет). Вот собственно говоря суть проблемы, спасибо заранее добрым людям которые помогут) Скриншот конфига и сам код скрипта приложены с посту.
# -*- coding: utf-8 -*-
import os
path = '/test3.conf'
name1 = input('what setting you to change? ')
value1 = input('what you want to change in this setting: ')
def set_parametrs(name1, value1):
with open(path) as f:
current_config = f.read().splitlines()
for i, option in enumerate(current_config):
if option.split("=")[0].strip() == name1:
current_config[i] = '%s = %s' % (name1, value1)
with open(path, 'w') as f:
f.write('\n'.join(current_config))
f.close()
def check_dir():
if os.path.isdir(value1):
print('we have this dir')
return True
else:
print('we dont have this dir')
return False
def check_yes_no():
for key, value in d.items():
if name1 == key and value1 in d[key]:
print('this parametr is valid')
return True
else:
print('this parametr is invalid')
return False
d = {
'backup_destination_automake': ('yes', 'no'),
'backup_destination_prefix': ('yes', 'no'),
'backup_schedule': ('yes', 'no'),
'backup_keep_on_errors': ('yes', 'no'),
'method_rsync_sudo': ('yes', 'no'),
'method_rsync_differential': ('yes', 'no'),
'method_verify': ('yes', 'no'),
'method_device_eject': ('yes', 'no'),
'report_remote_uri_down': ('yes', 'no'),
'report_stdout': ('yes', 'no'),
'report_stdout_on_errors': ('yes', 'no'),
'report_email': ('yes', 'no'),
'report_email_on_errors': ('yes', 'no'),
'report_email_rcpt': ('yes', 'no'),
'report_html': ('yes', 'no'),
'report_html_on_errors': ('yes', 'no'),
'report_html_logo': ('yes', 'no'),
'backup_source': check_dir,
'backup_destination': check_dir,
'backup_exclude': check_dir
}
'''param_dir = {
'backup_source': check_dir,
'backup_destination': check_dir,
'backup_exclude': check_dir
}'''
if name1 and value1 and d[name1]:
set_parametrs(name1, value1)
elif check_yes_no:
set_parametrs(name1, value1)
else:
print("bad")/code]