Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在类方法中引发异常_Python_Class_Exception - Fatal编程技术网

Python 在类方法中引发异常

Python 在类方法中引发异常,python,class,exception,Python,Class,Exception,我有一个类,检查文件是否存在,如果文件存在,则创建一个文件对象 如果文件不存在或存在权限问题,else将捕获异常 import os import sys import pandas import yaml class FileChange(): def __init__(self, file_name='manifile.yml'): ''' to create a factfile object '''

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

    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)的形式运行它,并将文件名作为参数传递。即使这样,我给出的文件名也是错误的。它应该给我一个例外和退出。将添加此文件的主代码

  • 如果我正确理解了您的问题,您希望添加一个受控的自定义异常。 如果这是正确的,那么此代码将适用于您

    代码:

    然后用不正确的文件调用它


    如果它不是定制的,那么只需提出(选择一个错误)

    我发现很难说出您所说的“我想使用这个类创建一个类对象,并捕获/处理对象中抛出的异常(如果文件不存在)。”。您要更正的当前代码中有哪些不适用?你的最终目标是什么?我刚刚更新了代码和使用场景。让我向你学习,成为一名更好的程序员。你的意见将很有帮助。
    class IncorrectFile(Exception):
        pass