Вызов исключения в методе класса - PullRequest
0 голосов
/ 03 октября 2019

У меня есть класс, который проверяет, существует ли файл или нет, и создает объект файла, если файл существует, иначе ловит исключение, если файл не существует или существуют проблемы с разрешениями.

    import os
    import sys
    import pandas
    import yaml

    class FileChange():

         def __init__(self, file_name='manifile.yml'):
            ''' to create a factfile object '''
            self.file_name = file_name
            self.checkfile()


        def checkfile(self):
            '''to check if the factfile exists or not '''
            try:
                with open(self.file_name, 'r') as yml_file:
                        self.yml_dict = yaml.safe_load(yml_file)
            except (IOError,FileNotFoundError):
                print('Unable to open file or File does not exist')


if __name__ == "__main__":
    if len(sys.argv) == 1:
        print("Run the script with the YML fact file name you would like to edit")
    elif len(sys.argv) > 1:
        FILE_NAME = sys.argv[1]
        print(FILE_NAME)
        F = FileChange(FILE_NAME)  

Я хотел бы создать объект класса, используя этот класс, и перехватить / обработать исключение, выданное в объекте, если файл не существует.

Я использую это двумя способами.
1. Создавая объект из импорта файлового обмена * F = FileChange ('dummyfile.yml'), где dummyfile не существует и, следовательно, он должен показать мне сообщениеи выход.

Я также запускаю это как утилиту сценария py (cmd> filechange.py dummyfile.yml) и передаю имя файла в качестве параметра. Даже тогда имя файла я даю неправильно. Это должно дать мне исключение и выход. Основной код для этого файла добавлен

1 Ответ

0 голосов
/ 03 октября 2019

Если я правильно понимаю ваш вопрос, вы хотите добавить контролируемое пользовательское исключение. Если это правильно, то этот код будет работать для вас

Код:

class IncorrectFile(Exception):
    pass

Затем просто вызовите его, сделав рейз IncorrectFile.

Если это несделанный на заказ, затем просто поднимите (выберите ошибку)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...