Я написал сценарий python, который хочет записывать журналы в файл на /var/log/myapp.log. Однако на некоторых платформах этого не существует, или у нас может не быть разрешения на это. В этом случае я хотел бы попробовать написать где-нибудь еще.Открытие другого файла на IOError
def get_logfile_handler():
log_file_handler = None
log_paths = ['/var/log/myapp.log', './myapp.log']
try:
log_file_handler = logging.FileHandler(log_paths[0])
except IOError:
log_file_handler = logging.FileHandler(log_paths[1])
return log_file_handler
Приведенный выше код может работать, но это, кажется, далеко от элегантности - в частности, попробовать другой файл в качестве части обработки исключений кажется неправильным. Это может просто вызвать еще одно исключение!
В идеале для этого потребуется произвольный список путей, а не только два. Есть ли элегантный способ написать это?
Я считаю, что модуль 'tempfile' может решить проблему https://docs.python.org/3.5/library/tempfile.html –
Завершите свои логические пути до тех пор, пока не получите тот, который не вызывает' IOError' , Если вы дойдете до конца списка, не найдя действительного имени, войдите в stderr или умрите с соответствующим сообщением об ошибке. –