Python 3 – os.stat() 方法

Python 3 – os.stat() 方法

os.stat()Python 3中用于获取文件属性的方法。它返回一个包含文件属性的命名元组。

语法

os.stat(path)

参数

  • path – 要获取属性的文件路径

返回值

  • os.stat_result 对象,它是一个命名元组,包含以下属性:
    • st_mode – inode 保护模式
    • st_ino – inode 节点号。
    • st_dev – inode 驻留的设备。
    • st_nlink – inode 的链接数。
    • st_uid – 所有者的用户ID。
    • st_gid – 所有者的组ID。
    • st_size – 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
    • st_atime – 上次访问的时间。
    • st_mtime – 最后一次修改的时间。
    • st_ctime – 由操作系统报告的 “ctime”。在某些系统上(例如Unix)是最后一次更改 inode 的时间,而在其他系统上(例如Windows)是创建时间(Windows)或最后访问时间(Unix)。

示例代码

import os

# 获取指定路径下文件的属性
path = "/Users/username/Documents/test.txt"
stats = os.stat(path)

# 输出元组中的属性值
print("File size:", stats.st_size)
print("Mode:", stats.st_mode)

输出结果

File size: 1024
Mode: 33188

在上面的代码中,我们首先导入了 os 模块,然后使用 os.stat() 方法获取了指定路径下文件的属性。最后,我们输出了元组中的 st_sizest_mode 属性值。

在这个示例中,我们使用了一些经常出现的属性值。让我们来详细了解一下这些属性:

st_size

st_size 属性表示文件的大小,以字节为单位。在这个示例中,我们得到了一个大小为1024字节(1KB)的文件。

st_mode

st_mode 属性返回文件的访问模式。在Unix系统中,它是一个整数,我们需要对这个整数进行解码才能得到实际的访问模式。解码器通常使用以下格式:

modestring = 'rwxr-xr-x'
mode = 0
for i, c in enumerate(modestring):
    if c == '-':
        continue
    value = 1 << (8 - i)  # 移位操作
    mode += value

但是,在我们的示例中,我们可以使用Python的内置“oct”函数来得到八进制数,并将其转换为字符串类型。因此,这里输出的值为 33188,它的八进制值为 100644

示例代码

import os

# 获取指定路径下文件的属性
path = "/Users/username/Documents/test.txt"
stats = os.stat(path)

# 获取访问模式的八进制值
mode = oct(stats.st_mode)

# 输出八进制数并转换为字符串类型
print("Mode:", str(mode))

输出结果

Mode: 0o100644

在上面的代码中,我们使用了 oct() 函数将 st_mode 属性转换为八进制字符串,并将其转换为字符串类型。

结论

Python 3中,我们可以使用 os.stat() 方法来获取文件的属性,如大小、访问模式、inode节点号等。它返回的是一个命名元组,我们可以通过它来获取文件的各种属性。能够获取文件属性是非常有用的,特别是在处理大量文件时。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程