在pysftp get中指定文件模式

Sau*_*rma 10 python sftp pysftp

我们可以写一个get这样的简单:

import pysftp

hostname = "somehost"
user = "bob"       
password = "123456"  
filename = 'somefile.txt'

with pysftp.Connection(hostname, username=user, private_key='/home/private_key_file') as sftp:
    sftp.get(filename)
Run Code Online (Sandbox Code Playgroud)

但是,我想在文件名中指定一个模式,例如: '*.txt'

关于如何使用这个的任何想法pysftp

Ric*_*ard 7

在查看文档后可以确认您无法使用模式列出。所以我做了这样的事情:

import pysftp
import re

server = pysftp.Connection(host=FTP_HOST,
                  username=FTP_USERNAME,
                  password=FTP_PASSWORD)
server.cwd(YOUR_FILES_PATH)
filelist = server.listdir()

for filename in filelist:
    filedate = re.search(".*\.txt$", filename)
    if filedate:
        print "FOUND FILE " + filename
Run Code Online (Sandbox Code Playgroud)


Mar*_*ryl 6

没有功能可以在pysftp中下载与文件掩码匹配的文件。

你必须:

  • 使用listdirwalktree(如果需要递归)列出目录
  • 循环访问文件列表,过滤所需文件
  • get分别给每个人打电话。

要获得启发,请参阅如何实现get_dget_r(递归)。

有关简单的实现,请参阅使用Paramiko在SFTP服务器上列出与Python中的通配符匹配的文件。有关递归示例,请参见Linux上的Python pysftp get_r在Linux上可以正常运行,但在Windows上不能正常运行