Форум сайта python.su
Всем привет! Столкнулся с проблемой, когда нужно реализовать докачку файла на ftp.Сделал следующим макаром (предполагается, что часть файла уже на ftp):
from ftplib import FTP
sendFile = open ("path/to/file", 'rb')
ftpConnect = FTP ("ftpServer")
ftpConnect.login ("login", "password")
ftpConnect.storbinary ('APPE ' + "file", sendFile, 128)
ftpConnect.quit ()
ftpConnect.close ()
Отредактировано (Янв. 19, 2009 16:22:27)
Офлайн
Я с ftplib не работал, но попробовал бы сделать sendFile.seek(размер_закачаной_части).
Или, если не получится, обернул бы sendFile так, чтобы первый байт был первый незакачаным байтом.
Но мне почему то кажется, что есть более элегантное решение описанное в документпции.
Офлайн
Спасибо за подсказку. Проблему решил следующим макаром:
import os
from ftplib import FTP
fileUploadName = "file"
sendFile = open ("path/to/file", 'rb')
ftpConnect = FTP ("ftpServer")
ftpConnect.login ("login", "password")
try:
ftpConnect.voidcmd('TYPE I')
uploadFileSize = ftpConnect.size (fileUploadName)
except:
uploadFileSize = 0
if (uploadFileSize == 0):
ftpConnect.storbinary ('STOR ' + fileUploadName, sendFile, 128)
else:
sendFile.seek (uploadFileSize, os.SEEK_SET)
ftpConnect.storbinary ('APPE ' + fileUploadName, sendFile, 128)
ftpConnect.quit ()
ftpConnect.close ()
Отредактировано (Янв. 19, 2009 16:23:06)
Офлайн
wellПерехватывай все эксцепшены только тогда, когда точно понимаешь, что тебе нужны все эксцепшены. В моей практике я сталкивался с таким раза три или четыре… Зато с перехватом не того, что надо из-за лени программиста который это написал, я сталкивался столько раз, что и не пересчитать!
except:
Офлайн
Пробовал таким макаром:
fileList = ftpConnect.nlst()
if [fileUploadName in fileList]:
...
Офлайн