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