检测文件是否在python中的网络驱动器上

时间:2012-11-29 15:05:05

标签: python linux getdrivetype

如何判断文件是否在网络驱动器上?我想包括路径看起来像在本地磁盘上的情况,但路径中的一个目录实际上是到网络驱动器的符号链接。

1 个答案:

答案 0 :(得分:3)

我将假设您可以获取网络文件系统及其基本挂载点的列表,您可以从解析mount或df获得这些点。如果是这种情况,您应该可以使用os.path

中的一些不同功能执行您想要做的所有事情。

这将采用文件名和路径作为网络文件系统。 path.realpath会将符号链接转换为它们链接到的文件的绝对路径。

def is_netfile(fname, netfs):
    fname = path.realpath(fname)
    netfs = path.realpath(netfs)
    if path.commonprefix([ netfs, fname ]) == netfs:
        return True
    else:
        return False

你可以将它与os.walk一起使用来浏览目录结构并捕获所有文件或链接到特定网络文件共享上的文件

start_dir = '/some/starting/dir'
net1 = '/some/network/filesystem'
remote_files = []

for root, dirs, files in os.walk(start_dir):
    for f in files:
        if is_netfile( path.join(root,f), net1):
            remote_files.append( path.join(root,f))

print remote_files