0

我有我的 NAS 服务器,我可以在上面获取/上传文件。现在我需要从服务器读取 .png 文件位置并将其传递到 UI 线程以显示图像。现在我只知道需要本地位置保存的方法获取。我不希望文件保存在我的本地机器上,但我应该能够在我的应用程序上显示该图像。

我已经浏览了这个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)
4

1 回答 1

0

我不太明白这个问题,所以我会试着猜测一下。
您应该能够查看远程服务器路径中的内容,而无需在本地下载文件。如果您不想下载,
get不是正确的方法,因为根据文档:

get(remotepath, localpath, callback=None)将一个远程文件(remotepath)从 SFTP 服务器复制到本地主机作为 localpath。操作引发的任何异常都将被传递。提供此方法主要是为了方便。

参数: (str) - 要复制remotepath的远程文件 (str) - 本地主机上的目标路径(可调用) - 可选回调函数(形式:func(int, int)),它接受到目前为止传输的字节数和总字节数被转移 localpathcallback

还有其他方法可以在不需要下载的情况下获取远程目录中的文件名和属性。
例如,这些是listdirlistdir_attrlistdir_iter

例如,listdir_attr

返回包含与给定路径中的文件对应的 SFTPAttributes 对象的列表。该列表是任意顺序的。它不包括特殊条目“。” 和“..”,即使它们存在于文件夹中。

返回的 SFTPAttributes 对象每个都有一个附加字段: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等。

于 2017-02-09T16:22:46.413 回答