Я загружаю zip-файл с удаленного FTP-сайта, используя Python ftplib. Затем я пытаюсь записать его на диск. Запись файла работает, однако большинство попыток открыть zip с помощью WinZip или WinRar терпят неудачу; оба приложения утверждают, что файл поврежден. Однако, как ни странно, если щелкнуть правой кнопкой мыши и попытаться извлечь файл с помощью WinRar, файл будет извлечен.
Чтобы было ясно, запись в файл будет работать, но не будет открывать в популярных zip-приложениях, а будет распаковываться с помощью тех же приложений. Обратите внимание, что модуль ZIP-файлов Python никогда не может распаковать ZIP-файлы.
Вот код, который я использую для получения zip-файла с FTP-сайта (пожалуйста, игнорируйте плохие вкладки, это не проблема).
filedata = None
def appender(chunk):
global filedata
filedata += chunk
def getfile(filename):
try:
ftp = None
try:
ftp = FTP(address)
ftp.login('user', 'password')
except Exception, e:
print e
command = 'RETR ' + filename
idx = filename.rfind('/')
path = filename[0:idx]
ftp.cwd(path)
fileonly = filename[idx+1:len(filename)]
ftp.retrbinary('RETR ' + filename, appender)
global filedata
data = filedata
ftp.close()
filedata = ''
return data
except Exception, e:
print e
data = getfile('/archives/myfile.zip')
file = open(pathtoNTFileShare, 'wb')
file.write(data)
file.close()