如何从服务器获取文件位置路径但不复制它?

时间:2017-02-09 15:50:16

标签: python paramiko pysftp

我找到了我的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)

1 个答案:

答案 0 :(得分:0)

我没有完全解决问题,所以我会尝试猜测一下 您应该能够查看远程服务器中路径中的内容,而无需在本地下载该文件 如果您不想下载,get不是正确的方法,因为根据文档:

  

get(remotepath, localpath, callback=None)复制远程文件   (远程路径)从SFTP服务器到本地主机的本地路径。任何   操作引发的异常将通过。这个方法是   主要是为了方便起见。

     

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

还有其他方法可以获取远程目录中的文件名和无需下载的属性 例如,这些是listdirlistdir_attrlistdir_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等等。