Python 一组文件的SFTP完整文件路径

Python 一组文件的SFTP完整文件路径,python,sftp,Python,Sftp,假设我有一个文件列表,例如 files = ["C:\\MyDir\\some_file.txt", "C:\\MyDir\\another_file.txt", "C:\\MyDir\\some_file.old"] 我想取出以“some”开头的“.txt”文件。我使用标准的fnmatch.filter方法: my_files = fnmatch.filter([os.path.basename(i) for i in files], "some*.txt

假设我有一个文件列表,例如

files = ["C:\\MyDir\\some_file.txt",
         "C:\\MyDir\\another_file.txt",
         "C:\\MyDir\\some_file.old"]
我想取出以“some”开头的“.txt”文件。我使用标准的fnmatch.filter方法:

my_files = fnmatch.filter([os.path.basename(i) for i in files], "some*.txt")
返回[“some_file.txt”]。现在让我们假设这些文件实际上在一个SFTP站点上,我想在过滤之后从SFTP站点下载它们。如何获取要下载文件的完整文件路径

os.path.abspath("some_file.txt") 

由于明显的原因,它将不起作用。我可以简单地用另一个通配符(“*”)作为过滤器模式的前缀,但这是一种解决方法。有没有干净的方法可以做到这一点?

如果需要完整路径名,则必须对完整路径名应用过滤器。
fnmatch
模式有点有限,而且无论如何都会转换为regex,所以为什么不直接使用
re

import re
files = ["C:\\MyDir\\some_file.txt",
     "C:\\MyDir\\another_file.txt",
     "C:\\MyDir\\some_file.old"]

patern = re.compile(r"\\some[^\\]*\.txt$", re.I)
filtered_files = [f for f in files if pattern.search(f)]