2017-02-09 70 views
0

我有我的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

我不完全得到這個問題,所以我會嘗試猜位。
您應該可以查看遠程服務器中路徑中的內容,而無需在本地下載文件。
get是不是如果你不想下載,因爲按照文件正確的方法:SFTP服務器到本地主機的localPath

get(remotepath, localpath, callback=None)複製遠程文件 (remotepath)。任何操作引發的異常都會通過。這種方法主要是爲了方便而提供的 。

參數remotepath(STR) - 遠程文件副本localpath (STR) - 本地主機callback(贖回)的目標路徑 - 可選的回調函數(形式:函數(INT,INT ))接受到目前爲止傳輸的字節 和總字節被轉移

還有其他的方法可以得到遠程目錄和這些屬性的文件名,而不需要下載。例如
這些是listdir,listdir_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

+0

我明白你的解釋之上,但我關心的是使用上面的技術,我可以得到這樣的數據: /A/B/C/pic_ex1.png /A/B/C /pic_ex2.png /A/B/C/pic_ex3.png 但我不能直接使用此路徑在QLabel上顯示,因爲它會在本地路徑上搜索。我想要這個文件路徑像鏈接一樣。 –

相關問題