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

时间:2012-05-23 15:10:47

标签: 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")

返回[“some_file.txt”]。现在让我们说这些文件实际上是在SFTP站点上,我想在过滤后从SFTP站点下载它们。如何获取要下载的文件的完整文件路径?

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

由于显而易见的原因不起作用。我可以简单地在我的过滤器模式前添加另一个通配符(“*”),但这是一种解决方法。有干净的方法吗?

1 个答案:

答案 0 :(得分:0)

如果您想要完整路径名,那么您必须在完整路径名上应用过滤器。 fnmatch模式有点受限,无论如何转换为正则表达式,所以为什么不直接使用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)]