stat函数的用法
的有关信息介绍如下:
stat 函数用法详解
1. 概述
stat 是一个在多种编程语言(如C、Python等)和操作系统中广泛使用的函数,用于获取文件或文件系统对象的状态信息。这些信息通常包括文件的类型、大小、权限、创建时间、修改时间等。
2. C语言中的 stat 函数
头文件
#include <sys/types.h> #include <sys/stat.h> #include <unistd.h>函数原型
int stat(const char *pathname, struct stat *buf);参数:
- pathname: 要检查的文件路径的字符串指针。
- buf: 指向 struct stat 结构体的指针,该结构体将存储返回的文件状态信息。
返回值:成功时返回0;失败时返回-1,并设置 errno 以指示错误原因。
示例代码
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <time.h> int main() { struct stat fileStat; if (stat("example.txt", &fileStat) == -1) { perror("stat"); return 1; } printf("File size: %ld bytes\n", fileStat.st_size); printf("Permissions: %o\n", fileStat.st_mode & 0777); printf("Last modified: %s", ctime(&fileStat.st_mtime)); return 0; }struct stat 字段说明
- st_dev: 设备ID。
- st_ino: i节点号。
- st_mode: 文件类型和权限标志。
- st_nlink: 硬链接数。
- st_uid: 用户ID。
- st_gid: 组ID。
- st_rdev: 如果该文件是设备文件,则为其设备ID。
- st_size: 文件大小(以字节为单位)。
- st_blksize: 块大小(I/O操作的最优块大小)。
- st_blocks: 所占用的块数量。
- 时间戳字段(单位均为自Epoch以来的秒数):
- st_atime: 上次访问时间。
- st_mtime: 上次修改时间。
- st_ctime: 上次状态改变时间。
3. Python 中的 os.stat() 和 pathlib.Path.stat()
使用 os.stat()
import os import time stat_info = os.stat('example.txt') print(f"File size: {stat_info.st_size} bytes") print(f"Permissions: {oct(stat_info.st_mode)[-3:]}") print(f"Last modified: {time.ctime(stat_info.st_mtime)}")使用 pathlib.Path.stat()
from pathlib import Path import datetime file_path = Path('example.txt') stat_info = file_path.stat() print(f"File size: {stat_info.st_size} bytes") print(f"Permissions: {oct(stat_info.st_mode)[-3:]}") print(f"Last modified: {datetime.datetime.fromtimestamp(stat_info.st_mtime)}")os.stat_result 对象属性
- st_mode: 保护模式。
- st_ino: i节点号。
- st_dev: 设备标识符。
- st_nlink: 硬链接的数量。
- st_uid: 所有者用户ID。
- st_gid: 所有者组ID。
- st_size: 文件大小(以字节为单位)。
- st_atime: 最后访问时间。
- st_mtime: 最后修改时间。
- st_ctime: 创建时间(在某些系统上可能是最后元数据更改的时间)。
4. 总结
stat 函数是一个强大的工具,可以获取关于文件和目录的详细信息。无论是在C语言中还是在Python中,它都提供了丰富的接口来查询这些状态信息。理解并使用 stat 可以帮助你更好地管理文件系统和调试程序。



