Python中获取文件inode、文件名与绝对路径的可用模块及调用报错处理
报错核心原因
os.DirEntry是Python做目录扫描时的专用封装类,它的inode属性是绑定在类实例上的成员方法,根本不是可以直接传文件路径字符串调用的静态接口。直接把字符串路径丢给os.DirEntry.inode(),自然会触发“描述符无法作用于字符串对象”的类型不匹配错误。
可实现文件元信息提取的内置工具
完全不需要装第三方包,Python自带的几个模块就能覆盖所有需求:
os:提供传统的路径操作、文件状态查询接口pathlib:面向对象写法的路径操作模块,比拼接os.path的写法更简洁stat:配合文件状态返回值,解析inode、权限、大小这类元属性
原代码的问题修正
- 不要硬用DirEntry拿inode:跨平台兼容性最好的写法是直接通过
os.stat(目标路径).st_ino获取inode值,不需要额外创建DirEntry实例 - 拼接类型不匹配的问题:inode返回的是整数类型,直接和字符串拼接会报错,需要先把整数转成字符串
修正后可直接运行的参考代码
import os from pathlib import Path filepath = "home/Documents/example.py" # 提取文件名 file_name = Path(filepath).name print("File Name: " + file_name) # 提取绝对路径 abs_path = os.path.abspath(filepath) print("File Path: " + abs_path) # 正确获取inode值 inode_val = os.stat(filepath).st_ino print("inode: " + str(inode_val))
注意:如果目标路径的文件实际不存在,
os.stat()会抛出FileNotFoundError,可以提前通过Path(filepath).exists()做存在性校验,避免运行时报错。
内容的提问来源于stack exchange,提问作者AerialSong
相关产品推荐
相关产品推荐

