匹配文件路径而不考虑网络p

2024-05-16 11:33:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个工具,可以根据多种情况删除网络路径上的文件。我想排除某些路径被检查和有困难找到一个合适的方法。在

程序处理的一些路径如下:

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.extFolder的一部分(我排除在检查范围之外)。由于我不是路径操作或正则表达式方面的专家,我陷入了困境。我尝试了下面的regex,对于NFS路径,它失败了,因为它也使用了共享名(E)。对于UPnP路径,它完全失败,因为它们的性质完全不同。在

^{pr2}$

我也尝试过使用os.path模块,但这些方法似乎并不合适。在

在等待更有效的答案时,我构建了一个正确解析的regex,它只会捕获文件夹结构而忽略前缀:

"(?:smb|afp|nfs|upnp)://(?:(?:.+):(?:.+)@)?(?:.+?)/(?P<tail>.*)$"

有人能给我指出一个更有效的方法吗?我认为这会消耗太多内存,无法测试许多不同的文件。在

它需要在Python2.6或更低版本上运行,因为它是现有程序的附加组件。在


Tags: 文件topath方法路径网络folderupnp
1条回答
网友
1楼 · 发布于 2024-05-16 11:33:46

如果网络和本地目录相同,则可以使用手术室步行(本地)只需更改驱动器即可获取网络目录。在

import os
networkdir = "Z:\\"
localdir = "C:\\"

for dirs,subdirs,files in os.walk(localdir):
    if os.path.join(localdir,dirs) == excluded:
        continue
    for filename in files:
        localfile = os.path.join(localdir,dirs,filename)
        networkfile = os.path.join(networkdir,dirs,filename)

要检查文件是否位于排除的文件夹中:

^{pr2}$

相关问题 更多 >