首页 > 解决方案 > 从命令行参数错误读取文件

问题描述

我正在编写一个程序(从命令行参数读取文件)和一些要处理的异常。我有 2 个例外:1)如果我要读取的文件在路径中不存在,我应该给出一个例外。2)如果我要读取的文件的格式不匹配,我应该给出另一个例外。

try:
    f = open(sys.argv[2], 'r')
    commands = [[line.split()] for line in f.readlines()]
    f.close()
except FileNotFoundError:
    print('Input file not found')
    sys.exit()
    

对于第一个例外,我这样做了,但我不能做第二个例外,我该怎么办?

注意:第二个异常意味着如果我在命令行中编写了 x.txt 并且如果 x.pptx 存在,我应该给出一个异常,例如“格式不正确”。

标签: pythonpython-3.xexception

解决方案


您可以定义自定义异常

class MyException(Exception):
    pass

如果文件格式检查的条件失败,则引发它:

try:
    f = open(sys.argv[2], 'r')
    commands = [[line.split()] for line in f.readlines()]
    if incorrect_format(sys.argv[2]):
        f.close()
        raise MyException
    f.close()
except FileNotFoundError:
    print('Input file not found')
    sys.exit()
except MyException:
    print('File format not correct')
    sys.exit()

您可以在函数中定义文件格式检查的逻辑incorrect_format。例子:

def incorrect_format(filename):
    return filename.split(".")[-1] == "txt"

推荐阅读