您的位置首页百科知识

stat函数的用法

stat函数的用法

的有关信息介绍如下:

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 可以帮助你更好地管理文件系统和调试程序。