我找到了我的NAS服务器,我可以在其上获取/上传文件。现在我有了suituation,我需要从服务器读取.png文件位置并在UI线程上传递它以显示图像。现在我只知道需要本地位置保存的方法get。我不希望文件保存在我的本地计算机上,但只是我可以在我的应用程序上显示该图像。
我已完成此http://docs.paramiko.org/en/2.1/api/sftp.html但未找到相关使用方法
代码是: -
import paramiko
paramiko.util.log_to_file(r'D:\TechnoThrone\Builds\paramiko.log')
# Open a transport
host = "stedgela01.TechnoThrone.com"
port = 2222
transport = paramiko.Transport((host, port))
# Auth
password = "xxx"
username = "xxxx"
transport.connect(username = username, password = password)
# Go!
sftp = paramiko.SFTPClient.from_transport(transport)
# Download
filepath = '/A/B/C/pic_ex.png'
localpath = r'D:\picfolder\pic_ex.png'
sftp.get(filepath, localpath)
答案 0 :(得分:0)
我没有完全解决问题,所以我会尝试猜测一下 您应该能够查看远程服务器中路径中的内容,而无需在本地下载该文件 如果您不想下载,get不是正确的方法,因为根据文档:
get(remotepath, localpath, callback=None)
复制远程文件 (远程路径)从SFTP服务器到本地主机的本地路径。任何 操作引发的异常将通过。这个方法是 主要是为了方便起见。参数:
remotepath
(str) - 复制localpath
的远程文件 (str) - 本地主机callback
上的目标路径(可调用) - 接受的可选回调函数(form:func(int,int)) 到目前为止传输的字节数和要传输的总字节数
还有其他方法可以获取远程目录中的文件名和无需下载的属性 例如,这些是listdir,listdir_attr和listdir_iter。
例如,listdir_attr
将
返回包含与文件对应的SFTPAttributes对象的列表 在给定的路径中。该列表按任意顺序排列。它不包括 特殊条目'。'和' ..'即使他们出现在 文件夹中。
返回的SFTPAttributes对象将各有一个 field:longname,可能包含文件的格式化字符串 属性,采用unix格式。这个字符串的内容可能会 取决于SFTP服务器的实现。
参数:path(str) - 列表路径(默认为'。')
返回:列表 SFTPAttributes对象
您可以使用以下内容:
list_png_files = []
for file_attributes in sftp.listdir_attr("remote_path"):
if file_attributes.filename.endswith('.png'):
list_png_files.append(file_attributes.filename)
检查它是否会给你相对或绝对的路径
类似的你可以试试listdir
等等。