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_size
和 st_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节点号等。它返回的是一个命名元组,我们可以通过它来获取文件的各种属性。能够获取文件属性是非常有用的,特别是在处理大量文件时。