0
下載中心百上千個XML文件(從字節大小爲50 MB /文件)的結構是這樣/年,月/年 - 月 - 日/小時/文件與ftplib。 因此,我通過每個小時文件夾循環一個給定的一天,併爲每一個我存儲所有的文件名與ftp.nlst(),然後我循環通過每個文件名,我donwload像這樣的有關文件。
with open(local_file, 'wb') as fhandle:
try:
ftp.retrbinary('RETR ' + filename, fhandle.write)
except EOFError:
try:
fhandle.close()
os.remove(local_file)
ftp = ftplib.FTP()
ftp.connect(self.remote_host,self.port, timeout=60)
ftp.login(self.username, self.passwd, acct="")
ftp.cwd(self.input_folder + '/' + subdir)
try:
with open(local_file, 'wb') as fhandle:
ftp.retrbinary('RETR ' + filename, fhandle.write, 8192)
except:
self.log.error('i give up !!!')
預計:
對於給定的輸入文件夾中的每一天,下載所有有關XML文件
我得到什麼:
的EOFError
什麼我已經嘗試過了:
- 我已經去了所有可能的帖子關於 stackoverflow和一般的網絡。
- 我試圖關閉並打開 小時文件夾中每個子文件夾的連接。
- 它似乎並不是一個導致問題的特定文件。這絕對不是第一個。我在使用
ftp.retrbinary()
下載文件時獲取此EOFError
。這與我下載成千上萬個xml文件的事實有關,因爲我已經用2000個文件測試了這個腳本,並且我沒有任何例外,但總是有大約287000個文件。而我不明白的是,該腳本每次下載的XML文件相同的量/數量,周圍159 000,它始終是 我曾嘗試在
ftp.retrbinary('RETR ' + filename, fhandle.write,4096)
與緩衝區大小玩
問:
這可能是因爲我錯過了什麼? 如何處理此EOFError以繼續下載我的所有文件......並且不會失去理智。
你什麼時候得到'EOFError'?在第一個文件已經?或在後續的文件?在什麼聲明?向我們展示異常堆棧跟蹤。 - 從你的問題來看,並不清楚你的問題與*「下載成千上萬個xml文件」*有什麼關係。 –
@MartinPrikryl它似乎不是一個導致問題的具體文件。這絕對不是第一個。用'ftp.retrbinary()'下載文件時,我得到這個'EOFError'。對不起,我完全忘記了堆棧跟蹤,我會在週一發佈一個。這與我下載成千上萬個xml文件的事實有關,因爲我已經用2000個文件測試了這個腳本,並且我沒有任何例外,但總是有大約287000個文件。而我不undertsnad的是,腳本donningds每次相同的amoun/xml文件的數量,約159 000,它始終是 – sdikby
所有這些信息應該在你的問題從第一時間。請編輯它。 –