取消
顯示的結果
而不是尋找
你的意思是:

FileNotFoundError當使用sftp寫入磁盤在工作

akdm
貢獻者

當我試著一個筆記本轉化為一份工作我經常遇到一個問題寫入本地文件係統。對於這個特定的例子中,我做了所有我的筆記本測試的bytestream小文件。當我試圖運行工作,我使用的方法將下載保存到磁盤,但是我越來越“FileNotFoundError”。下麵一個例子代碼片段是用兩個方法我試過了:

#方法1 def sftp_read (sftp_object前綴):關鍵= f '{前綴}/ {sftp_object} '如果不是os.path.exists (' / local_disk0 / tmp / '): os.makedirs (' / local_disk0 / tmp / ') sftp。get (sftp_object f ' / local_disk0 / tmp / {sftp_object}’) #做東西os.remove (f / local_disk0 / tmp / {sftp_object}”) #方法2 def sftp_read (sftp_object前綴):關鍵= f '{前綴}/ {sftp_object} ' dbutils.fs.mkdirs sftp(“文件:/ tmp /”)。get (sftp_object f 'file: / tmp / {sftp_object}”) #做東西dbutils.fs.rm (f 'file: / tmp / {sftp_object}’) FileNotFoundError回溯(最近調用最後)<命令- 3394785040378964 > <細胞係:1 >()3如果dryrun: 4 (sftp_object) - - - - - >打印5 sftp_read (sftp_object,前綴)<命令- 3394785040378909 > sftp_read (sftp_object前綴)57如果不是os.path.exists (' / local_disk0 / tmp / '): 58 os.makedirs (' / local_disk0 / tmp / ') - > 59 sftp。get (sftp_object f ' / local_disk0 / tmp / {sftp_object}’) 60 #做東西61 os.remove (f / local_disk0 / tmp / {sftp_object}”) / local_disk0 / .ephemeral_nfs / env / pythonenv - 1 - e9ce7e1 d7d5 - 4473 - b8d6 dbe59be12302 / lib / python3.9 /網站/ paramiko / sftp_client。py在get(自我、remotepath localpath,回調,預取)808添加了“預取“關鍵字參數。809”“”- - > 810張開(localpath,“世界銀行”)作為fl: 811大小=自我。getfo (remotepath、fl調,預取)812年代= os.stat (localpath) FileNotFoundError: [Errno 2]沒有這樣的文件或目錄:“/ local_disk0 / tmp /道路/ / file.ext '

我引用了足協本地文件文檔:https://docs.www.eheci.com/files/index.html

任何建議或我需要知道工作運行在一個不同的方式比筆記本電腦嗎?

1接受解決方案

接受的解決方案

akdm
貢獻者

我能修好它。這是一個問題在SFTP嵌套文件。我必須確保父文件夾被創建。分裂的本地路徑和文件更容易確保它存在了os.path.exists()和os.makedirs ()

def sftp_read (sftp_object桶,前綴):關鍵= f '{前綴}/ {sftp_object} ' local_path = / local_disk0 / tmp的local_file = f ' {local_path} / {os.path.basename (sftp_object)}”如果不是os.path.exists (local_path): os.makedirs local_path sftp。get (sftp_object local_file) #做東西os.remove (local_file)

總的來說,不是一個磚問題,隻是一個問題出現在磚。

在原帖子查看解決方案

3回複3

Debayan
尊敬的貢獻者三世
尊敬的貢獻者三世

嗨,謝謝你接觸到community.www.eheci.com。

請您也提到你在哪裏申報sftp_object ?還有,你是怎麼設置SFTP連接?是少用密碼或密碼?

SFTP連接是用一個密碼

def connect_to_sftp(主持人:str,端口:(str, int),用戶名:str,密碼:str) - > paramiko.sftp_client。SFTPClient: stfp運輸=沒有,沒有一個試題:運輸= paramiko。交通運輸(主機、端口)。連接(用戶名=用戶名、密碼=密碼)除了異常e:打印(e)如果交通不是沒有:transport.close()嚐試:sftp = paramiko.SFTPClient.from_transport(運輸)返回sftp除了異常e:打印(e)如果sftp不是沒有:sftp.close ()

sftp_object遠程對象的名稱:

文件在sftp.listdir (sftp_dir): sftp_object = f ' {sftp_dir} / {file} '如果dryrun:打印(sftp_object) sftp_read (sftp_object,前綴)

akdm
貢獻者

我能修好它。這是一個問題在SFTP嵌套文件。我必須確保父文件夾被創建。分裂的本地路徑和文件更容易確保它存在了os.path.exists()和os.makedirs ()

def sftp_read (sftp_object桶,前綴):關鍵= f '{前綴}/ {sftp_object} ' local_path = / local_disk0 / tmp的local_file = f ' {local_path} / {os.path.basename (sftp_object)}”如果不是os.path.exists (local_path): os.makedirs local_path sftp。get (sftp_object local_file) #做東西os.remove (local_file)

總的來說,不是一個磚問題,隻是一個問題出現在磚。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map