2012-11-29 90 views
4

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

+0

也许这会帮助你开始: http://serverfault.com/questions/143084/how-can-i-check-whether-a-volume-is-mounted-where-it-is-supposed-to-be-using- pyt http://stackoverflow.com/questions/2889490/check-if-nfs-share-is-mounted-in-python-script –

回答

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 
相关问题