如何在不打开文件的情况下测试文件在python中是否可读?

时间:2018-03-20 22:04:42

标签: python

想通过检查其属性/权限来测试linux系统中python中的文件是否可读。

python的新手,我正在寻找perl / bash中的以下内容。

[[-r $ {filename}]]

if(-r $ filename){...}

我只是在文件上打开以检查它是否可读:

def isFileReadable2 (filename):
    # check to see if file is readable
    # by trying to open a file in readonly mode
    # if an exception occurs,
    # then either the file didnt exist, or file was NOT readable
    try:
        import stat
        mode = os.stat(filename).st_mode
        fh = open (filename, 'r')
    except IOError as err:
        print ("Error opening file {}:{}\n". format (filename, err))
    else:
        fh.close ()
        return True
    return False

我注意到stat_result的位模式对应于文件 权限,即st_mode = 32832转换为0b1000000001000000, 反过来告诉我这个文件只是用户可执行文件,而不是 完全可读,这恰好是正确的。

所以,虽然我可以使用正确的位掩码来检查,但还是有更好的 os.stat_result对象的可移植接口?特别是st_mode 值?

考虑使用os.fstat,但返回相同的stat_result对象。

TIA,

1 个答案:

答案 0 :(得分:2)

您可以使用the function os.access