当文件没有所需权限时抛出异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当文件没有所需权限时抛出异常相关的知识,希望对你有一定的参考价值。
我有一个try except
块我正在检查文件权限,我的except
块应该在文件权限太开放时返回相应的错误消息。
if oct(os.stat(self.file_path).st_mode & 0o700):
try:
# do something with file path
except MyError as err:
return {'1': 'Permissions on the .bsm file is too opened'}
我试着寻找一个IOError
,但我没有发现它与我的用例非常相关,我定义的MyError
抛出unresolved reference
错误。
这里定义的更合适的例外是什么?我的例外应该返回一个字典,其中1
为key
,错误消息为value
。
答案
你的例外应该是PermissionError
:
if oct(os.stat(self.file_path).st_mode & 0o700):
try:
# do something with file path
except PermissionError as err:
return {'1': str(err)}
另一答案
您可以创建扩展Base Exception
类的自定义异常类。也许这样的事情。
class MyError(Exception):
"""
A common exception class
"""
message = 'Some default message'
def __init__(self, message=None):
self.message = message or self.message
super(MyError, self).__init__(self.message)
def is_file_readable():
return False
try:
if not is_file_readable():
raise MyError(message={'cause': 'File not readable'})
except MyError as e:
print(e.message)
另一答案
您可以像这样解决方案1编写此函数:
if oct(os.stat(self.file_path).st_mode & 0o700):
try:
# do something with file path
except Exception as err:
print(err) #if you want to see the error message
return {'1': 'Permissions on the .bsm file is too opened'}
解决方案2:如果您还想知道文件打开异常。试试这个:
try:
fileopen = oct(os.stat(self.file_path).st_mode & 0o700)
if fileopen:
try:
# do something with file path
except Exception as err:
print(err) #if you want to see the error message
return {'1': 'Permissions on the .bsm file is too opened'}
except Exception as e:
print("File open error",e)
以上是关于当文件没有所需权限时抛出异常的主要内容,如果未能解决你的问题,请参考以下文章
removeItem(at: ) 成功删除目标文件时抛出异常