您的位置:

Python os stat:获取文件属性信息

一、os.stat()函数介绍

Python os.stat()函数用于获取文件属性信息,包括文件大小、创建时间、修改时间等。该函数返回一个包含文件属性信息的stat对象,可以通过该对象的各种方法获取不同属性信息。下面是os.stat()函数的语法:

    os.stat(path)

其中,path参数为文件路径,可以是绝对路径或相对路径。

下面是一个简单的示例,通过os.stat()函数获取文件属性信息:

    import os

    statinfo = os.stat('./example.txt')
    print('文件大小:', statinfo.st_size)
    print('最近一次访问时间:', statinfo.st_atime)
    print('最近一次修改时间:', statinfo.st_mtime)

本示例中,使用os.stat()函数获取了“example.txt”文件的属性信息,并输出了文件大小、最近一次访问时间、最近一次修改时间。output:

    文件大小: 21
    最近一次访问时间: 1621470765.0646236
    最近一次修改时间: 1621470762.1572392

二、stat对象属性介绍

os.stat()函数返回一个stat对象,stat对象包含了文件属性信息,下面介绍一些常用的stat对象属性:

1. st_size

该属性返回文件大小,单位为字节。

2. st_atime

该属性返回最近一次访问时间,返回值为时间戳。

3. st_mtime

该属性返回最近一次修改时间,返回值为时间戳。

4. st_ctime

该属性返回文件创建时间,返回值为时间戳。

5. st_mode

该属性返回文件的访问权限,以位掩码的形式表示。位掩码是一种用于在二进制下表示一个数值的方法,也称位标记、掩码值等。

下面是一个获取文件访问权限的示例:

    import os

    statinfo = os.stat('./example.txt')
    print('文件访问权限:', statinfo.st_mode)

输出结果为:33188。

可以将该数字转换为二进制,然后从右向左数第 1、2、3 位表示文件所属者的权限,第 4、5、6 位表示同组用户的权限,第 7、8、9 位表示其他用户的权限。每一位上如果是 1,表示有该权限,如果是 0,表示没有该权限。例如本示例中的数字 33188 转换为二进制为 1000001011001100,从右向左数第 1、2、3 位表示该文件所属用户有读、写权限,第 4、5、6 位表示同组用户有读权限,第 7、8、9 位表示其他用户没有任何权限。

三、常用时间戳转换方法

os.stat()函数返回的时间戳需要通过转换才能直观地查看时间信息。下面介绍一些常用的时间戳转换方法:

1. 时间戳转时间字符串

可以使用time模块的localtime函数将时间戳转换为struct_time对象,再使用strftime函数将struct_time对象转换为时间字符串。下面是一个示例:

    import os
    import time

    statinfo = os.stat('./example.txt')
    atime = time.localtime(statinfo.st_atime)
    atime_str = time.strftime('%Y-%m-%d %H:%M:%S', atime)
    print('最近一次访问时间:', atime_str)

输出结果为:“最近一次访问时间: 2021-05-21 16:59:25”

2. 时间字符串转时间戳

可以使用datetime模块的strptime函数将时间字符串转换为datetime对象,再使用timestamp函数将datetime对象转换为时间戳。下面是一个示例:

    import datetime

    time_str = '2021-05-21 16:59:25'
    time_dt = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
    time_stamp = time_dt.timestamp()
    print('时间戳:', time_stamp)

输出结果为:时间戳:1621598365.0

四、小结

本文介绍了Python os.stat()函数的使用方法,以及常用的获取文件属性信息的属性和时间戳转换方法。在实际开发中,获取文件属性信息时需要注意文件访问权限和时间戳的转换方法,以便更好地处理文件。希望本文能够对大家有所帮助。