PDA

Показать полную графическую версию : [решено] Скрипт скачивания файла с интернета на Python


n_i_x
20-11-2012, 09:42
Доброго времени суток. Скрипт на Python, который скачивает лечащую утилиту от др.веб. Не могу понять почему при проверке выдаёт ошибку синтаксиса.

P.S. Python обновил до 3.3.0

import ftplib
import time
import shutil
import os

def handleDownload(block):
global downloaded
dwn_file.write(block)
downloaded = downloaded + len(block)
progress = float(downloaded) / size * 100
print '\rDownloading file... | %.2f Mb | %.1f %%' % (downloaded/1024.0/1024, progress),

server = 'ftp.drweb.com'
dir_to_copy = r'\\tools\DrWeb'
try:
ftp = ftplib.FTP(server)
ftp.login()
print 'Connected to FTP', server
except:
print 'Failed to connect to FTP', server
print 'Exit from script!'
exit()
ftp.cwd('pub/drweb/cureit')
file_list = ftp.nlst()
ident_part = time.strftime('%Y', time.localtime())
filter_list = [i for i in file_list if i[-4:] != '.exe' and i.find(ident_part) == 0]
filter_list.sort(reverse=True)
foldername = filter_list[0]
ftp.cwd(foldername)
file_list = ftp.nlst()
filename = file_list[0]
size = ftp.size(filename)
downloaded = 0
try:
print 'Filename:', filename
print 'Filesize: %.2f Mb' % (size/1024.0/1024)
print 'Starting download:', time.strftime('%H:%M:%S', time.localtime())
dwn_file = open(filename, 'wb')
ftp.retrbinary('RETR ' + filename, handleDownload)
print 'Download complete: ', time.strftime('%H:%M:%S', time.localtime())
dwn_file.close()
time.sleep(2)
new_name = '\CureIt-' + foldername[:8] + '.exe'
shutil.move(os.path.abspath(filename), dir_to_copy + new_name)
except:
print 'Error download file...'
ftp.quit()

lxa85
20-11-2012, 15:04
функция печати имеет вид -> print ('какой то текст')
Обратить внимание на скобки.
Дома могу попробовать посмотреть скрипт в действии.
---
Upd:
Проверил дома, все работает. (На работе прокси-сервер)
Т.ч. только конструкцию надо print поправить.

n_i_x
21-11-2012, 14:40
большое спасибо!

а что такой срипт через прокси не будет работать?

lxa85
21-11-2012, 16:12
n_i_x, неа. Ты переменным server указываешь прямой адрес. Я нашел несколько адресов раз (http://code.activestate.com/recipes/577643-transparent-http-tunnel-for-python-sockets-to-be-u/) два (http://www.example-code.com/python/pythonftp.asp) три (http://docs.python.org/3.1/howto/urllib2.html)
В которых есть примеры работы с прокси. Единственное что, они на английском и смотрел я их поверхностно.
Т.е. посидеть, поковырять денек и все должно получиться.
Чтобы легче было ловить ошибки, возьми среду разработки.
Свободная и достаточным функционалом: PyScripter.
В ней вполне можно заниматься отладкой. (Я пару-тройку недель только изучаю питон. Час назад получил первый базово-рабочий скрипт на 200 строк.)




© OSzone.net 2001-2012