2019年8月2日 / 499次阅读 / Last Modified 2019年8月6日
Python的os.path模块和stat模块,都有函数用来判断一个文件是否为link文件。不过它们的判断都是文件是否为soft link软链接,或者说symbolic link符号链接。没有函数用来判断此文件是否为hard link硬链接文件。
我们自己写点Python代码来判断是否为硬链接文件,不过首先,我们需要先搞清楚硬链接的特点,主要有几下几点:
有了以上特点,我们就可以写代码来判断和分析了。
先上代码:
>>> import os
>>> fs = os.stat('123.txt')
>>> fs.st_nlink
2
123.txt文件,通过os.stat获取文件的metadata,发现st_nlink的值是2,这就能说明,123.txt是一个硬链接文件。
根据硬链接的特点,一定在相同mount point挂载点下,存在Inode相同的文件。
获取Inode编号:
>>> fs.st_ino
2115578
遍历某个文件夹:
本小站已经介绍了两种遍历文件夹的方法,分别是使用os.walk函数,或者是递归遍历目录树的方法。从解决判断硬链接文件的角度看,这两个方法都可以使用。
也许还有一个函数,你能用得上,os.path.ismount(path)。这个函数判断某个路径是否为mount point(挂载点)。你可以试着从已有的那个硬链接文件的路径开始,一层层沿着它的路劲往上判断,直到找到mount point(一定可以找到,因为根路径就是mount point),然后从这个mount point开始遍历下面的所有文件,将每个文件的Inode编号与原有文件的进行对比判断,如果相同,就算找到了。
至于找到相同Inode的硬链接文件后怎么处理,这个就要看你自己的业务需求了。
-- EOF --
本文链接:https://www.pynote.net/archives/717
前一篇:简易UDP服务器和客户端通信代码
后一篇:用xlrd模块读取.xls文件
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记