5

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

4

1 回答 1

4

我将假设您可以获得网络文件系统及其基本安装点的列表,您可以通过解析 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
于 2012-11-30T16:58:29.533 回答