第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 FTP 下載時無法識別 Zip 文件

通過 FTP 下載時無法識別 Zip 文件

一只萌萌小番薯 2021-07-08 14:15:12
我正在嘗試創(chuàng)建一個腳本,該腳本將下載一個 ZIP 文件并將其解壓縮。我在 Windows Server 2016 上使用 Python 2.7。我創(chuàng)建了一個看起來像這樣的下載腳本:ftp = FTP()ftp.connect("***")ftp.login("***","***")ftp.cwd(ftppath)ftp.retrbinary("RETR " + filename ,open(tempfile, 'wb').write)ftp.quit()和一個 zip 提取腳本:zip_ref = zipfile.ZipFile(tempfile, 'r')zip_ref.extractall(localpath)zip_ref.close()這些獨(dú)立工作。含義:如果我在我的測試 ZIP 文件上運(yùn)行提取腳本,它將提取該文件。此外,如果我從我的服務(wù)器運(yùn)行 FTP 腳本,它將下載文件。然而!如果我一起運(yùn)行腳本,這意味著我從我的 FTP 服務(wù)器下載文件然后解壓縮它,它將返回一個錯誤:“文件不是 Zip 文件”。有誰知道為什么會這樣?我檢查了以下內(nèi)容:正確的文件夾下載 zip 文件,解壓并重新壓縮(然后腳本將解壓它)編輯我一直在閱讀有關(guān) IO 字節(jié)等的信息,但是在實(shí)現(xiàn)它時沒有任何運(yùn)氣。
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個贊

可能是因?yàn)檫@種不好的做法單行:

ftp.retrbinary("RETR " + filename ,open(tempfile, 'wb').write)

open(tempfile, 'wb').write不給任何擔(dān)保文件時,將被關(guān)閉。您不會在open任何地方存儲返回的句柄,因此您無法決定何時close寫入文件(并確保完整的磁盤寫入)。

因此,當(dāng)嘗試以讀取模式打開文件時,文件的最后一部分可能尚未寫入磁盤。并且鏈接下載 + 解壓縮可以觸發(fā)錯誤(當(dāng) 2 個單獨(dú)的執(zhí)行留下刷新和關(guān)閉文件的時間時)

最好使用這樣的上下文管理器:

with open(tempfile, 'wb') as f:
    ftp.retrbinary("RETR " + filename ,f.write)

所以文件在退出with塊時被刷新和關(guān)閉(當(dāng)然,這個塊之外執(zhí)行文件讀取操作)。


查看完整回答
反對 回復(fù) 2021-07-13
  • 1 回答
  • 0 關(guān)注
  • 332 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號