更改file.index

时间:2016-07-11 10:31:18

标签: python python-2.7 error-handling

我使用file.index搜索文件中的字符串。

def IfStringExistsInFile(self,path,lineTextCheck):
    file = open(path).read()
    if file.index(lineTextCheck):
        print (lineTextCheck + " was found in: " + path)
    else:
        raise ValueError (lineTextCheck + " was NOT found in: " + path)

我的问题是,如果它找不到字符串,它会自动引发一个默认的ValueError,而不会进入包含我的自定义ValueError的“else”代码:

ValueError: substring not found

有没有办法可以更改默认的ValueError?

目前,我想出的唯一方法是用“try except”包装句子,如下:

def IfStringExistsInFile(self,path,lineTextCheck):
    file = open(path).read()
    try:
        if file.index(lineTextCheck):
            print (lineTextCheck + " was found in: " + path)
    except:
            raise ValueError(lineTextCheck + " was NOT found in: " + path)

任何更好的方式将不胜感激。提前谢谢!

3 个答案:

答案 0 :(得分:2)

  

任何更好的方式都将非常感谢

你完全解决了这个问题。

请注意,您可以通过创建一个继承自Exception的类来创建自己的BaseException,但这很少需要。

答案 1 :(得分:1)

据我所知,你无法改变内置错误。当您raise出现错误时,您可以将其提升到任何您想要的位置,但是因为您完成了except内置错误,您仍然可以获得该错误。

因此,我认为您的第二个解决方案是最好的except内置错误,并使用raise

进行处理

答案 2 :(得分:1)

Easier to Ask for Forgiveness than Permission

使用try/except是标准做法。您也可以删除if,以便在找到索引时打印该行而不会引发错误:

try:
    file.index(lineTextCheck)
    print (lineTextCheck + " was found in: " + path)
except ValueError: # explicitly specify the error
    raise ValueError(lineTextCheck + " was NOT found in: " + path)