我使用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)
任何更好的方式将不胜感激。提前谢谢!
答案 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)