Я FTP FTP-файл с удаленного FTP-сайта, используя ftplib для Python. Затем я пытаюсь записать его на диск. Файл пишет работает, однако большинство попыток открыть zip с помощью WinZip или WinRar сбой; оба приложения утверждают, что файл поврежден. Как ни странно, при щелчке правой кнопкой мыши и попытке извлечь файл с помощью WinRar, файл будет извлекать.Есть ли специальный трюк для загрузки zip-файла и записи его на диск с помощью Python?
Так быть ясно, файл запись будет работать, но не будет открытого внутри популярных почтовых приложений, но будет распаковки использовать то же приложение. Обратите внимание, что Zipfile-модуль Python никогда не не может извлечь почтовые индексы.
Вот код, который я использую, чтобы получить 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()
Я должен был сказать, что я выбрал все «реальные» обработки исключений, это всего лишь основы, чтобы показать проблему. – ApplePieIsGood