Я отправляю zip-файл по FTP с удаленного FTP-сайта, используя ftplib Python. Затем я пытаюсь записать его на диск. Запись в файл работает, однако большинство попыток открыть zip с помощью WinZip или WinRar не удаются; оба приложения утверждают, что файл поврежден. Как ни странно, если щелкнуть правой кнопкой мыши и попытаться извлечь файл с помощью WinRar, файл извлечет .
Итак, чтобы быть понятным, запись в файл будет работать, но не будет открывать внутри популярных zip-приложений, но будет распаковывать, используя те же приложения. Обратите внимание, что модуль zipfile 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()