如果文件不存在,则读取文件内容不会引发异常

时间:2019-04-19 19:57:53

标签: python python-3.x

我正在尝试按以下方式读取文件,并且如果文件不存在,我想记录一个错误。所以我写了下面的代码。但是此代码根本不会进入except块。我不确定该文件。

    DEFAULT_ROLE_PROPERTIES = '/tmp/role.properties'

    try:            
        self.role_properties = os.environ.get('VAULT_ROLE_PROPERTIES', DEFAULT_ROLE_PROPERTIES)
        with open(self.role_properties, 'r') as rolefp:
            cfg.readfp(rolefp)
        self.role_id = cfg.get('region', 'role_id')
    except Exception as msg:
        self.log.error("Unable to read role properties")

我不确定这里的语法有什么问题。上面的代码位于init函数(构造函数)中吗?

ls /tmp/role.properties
ls: cannot access /tmp/role.properties: No such file or directory

1 个答案:

答案 0 :(得分:0)

在继续获取环境/其他属性之前,您可以使用os.path检查路径是否存在(第一个)

示例代码:

import os.path
os.path.exists('tmp/role.properties/')

如果要检查是否存在特定文件并且有效(不是空),则可以使用os.stat

try:
    if os.stat(filename).st_size > 0:
       print "file present"
    else:
       print "file present but empty"
except OSError:
    print "No file"

希望这会有所帮助