我们可以像这样编写一个简单的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)但是,我想在文件名中指定一个模式,类似于:'*.txt'
关于如何使用pysftp实现这一点,你有什么想法吗?
发布于 2016-03-31 18:23:00
在pysftp中没有下载与文件掩码匹配的文件的功能。
您必须:
Connection.listdir或Connection.walktree (如果你需要过滤文件列表,过滤你想要的文件Connection.get。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.
发布于 2017-01-11 23:26:31
在浏览完文档后,我可以确认您不能使用模式列出。所以我做了这样的事情:
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发布于 2018-01-23 00:24:09
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)https://stackoverflow.com/questions/36329931
复制相似问题