我正在开发一个工具,可以根据多种情况删除网络路径上的文件。我想排除某些路径被检查和有困难找到一个合适的方法。在
程序处理的一些路径如下:
nfs_path = "nfs://Sharepoint/Path/to/Folder/File.ext"
smb_path = "smb://SERVER/Sharepoint/Path/to/Folder/File.ext"
afp_path = "afp://server/Sharepoint/Path/to/Folder/File.ext"
upnp_path = "upnp://277b787b-5b27-b46f-1687-91100ada8d1f/Path/to/Folder/File.ext"
exclusion = "smb://user:pass@server/E/Downloads/Path/to/Folder"
如您所见,一些路径使用凭据,而其他路径则没有。这些网络路径应该能够相互匹配。在
简而言之,我想确认使用任何协议的File.ext
是Folder
的一部分(我排除在检查范围之外)。由于我不是路径操作或正则表达式方面的专家,我陷入了困境。我尝试了下面的regex,对于NFS路径,它失败了,因为它也使用了共享名(E
)。对于UPnP路径,它完全失败,因为它们的性质完全不同。在
我也尝试过使用os.path
模块,但这些方法似乎并不合适。在
在等待更有效的答案时,我构建了一个正确解析的regex,它只会捕获文件夹结构而忽略前缀:
"(?:smb|afp|nfs|upnp)://(?:(?:.+):(?:.+)@)?(?:.+?)/(?P<tail>.*)$"
有人能给我指出一个更有效的方法吗?我认为这会消耗太多内存,无法测试许多不同的文件。在
它需要在Python2.6或更低版本上运行,因为它是现有程序的附加组件。在
如果网络和本地目录相同,则可以使用手术室步行(本地)只需更改驱动器即可获取网络目录。在
要检查文件是否位于排除的文件夹中:
^{pr2}$相关问题 更多 >
编程相关推荐