首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pysftp get中指定文件模式

在pysftp get中指定文件模式
EN

Stack Overflow用户
提问于 2016-03-31 17:52:13
回答 3查看 16.9K关注 0票数 12

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

代码语言:javascript
复制
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)

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

关于如何使用pysftp实现这一点,你有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-31 18:23:00

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

您必须:

  • 有关简单的实现,请参阅:

List files on SFTP server matching wildcard in Python using Paramiko

这是关于Paramiko的,但文件匹配部分将与pysftp相同:

导入fnmatch

对于sftp.listdir(‘/remote/path’)中的文件名: if fnmatch.fnmatch( filename,"*.txt"):sftp.get("/remote/path/“+ filename,"/local/path/”+ filename)

  • 有关递归示例(您必须添加匹配的文件),请参阅:

Python pysftp get_r from Linux works fine on Linux but not on Windows.

另请参见how Connection.get_d or Connection.get_r are implemented.

票数 9
EN

Stack Overflow用户

发布于 2017-01-11 23:26:31

在浏览完文档后,我可以确认您不能使用模式列出。所以我做了这样的事情:

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2018-01-23 00:24:09

代码语言:javascript
复制
import pysftp
import sys

[...]

dn = datetime.now().strftime("%Y%m%d%H");
with pysftp.Connection(myHost, myUsername, password=myPassword) as sftp:
    myFileList = sftp.listdir("files/")
    for filename in myFileList:
        if (filename.rfind("ArrivalList_" + dn) != -1):
            sftp.get("files/" + filename, "/tmp/" + filename)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36329931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档