在类方法中引发异常

时间:2019-10-03 12:05:46

标签: python class exception

我有一个检查文件是否存在的类,如果文件存在则创建一个文件对象 否则,如果文件不存在或存在权限问题,则捕获异常。

    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)  

我想使用此类创建一个类对象,如果文件不存在,则捕获/处理该对象中引发的异常。

我有2种用法。
1.通过创建一个对象 从filechange导入* F = FileChange('dummyfile.yml')其中虚拟文件不存在,因此它应该向我显示消息并退出。

  1. 我还以py脚本实用程序(cmd> filechange.py dummyfile.yml)的身份运行此文件,并将文件名作为参数传递。即使这样,我给出的文件名也是错误的。它应该给我一个例外然后退出。此文件的主要代码已添加

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,则希望添加一个受控的自定义例外。 如果正确,那么此代码将为您工作

代码:

class IncorrectFile(Exception):
    pass

然后通过调用IncorrectFile来调用它。

如果它不是定制的,则只需提出(选择错误)