2010-06-12 3 views
2

Я не могу заставить параметр RESUME_FROM работать. Вот пример кода, который я тестировал с:PycURL RESUME_FROM

import os 
import pycurl 
import sys 

def progress(total, existing, upload_t, upload_d): 
    try: 
     frac = float(existing)/float(total) 
    except: 
     frac = 0 
    sys.stdout.write("\r%s %3i%%" % ("file", frac*100) ) 

url = "http://launchpad.net/keryx/stable/0.92/+download/keryx_0.92.4.tar.gz" 
filename = url.split("/")[-1].strip() 

def test(debug_type, debug_msg): 
    print "debug(%d): %s" % (debug_type, debug_msg) 

c = pycurl.Curl() 
c.setopt(pycurl.URL, url) 
c.setopt(pycurl.FOLLOWLOCATION, 1) 
c.setopt(pycurl.MAXREDIRS, 5) 

# Setup writing 
if os.path.exists(filename): 
    f = open(filename, "ab") 
    c.setopt(pycurl.RESUME_FROM, os.path.getsize(filename)) 
else: 
    f = open(filename, "wb") 
c.setopt(pycurl.WRITEDATA, f) 

#c.setopt(pycurl.VERBOSE, 1) 
c.setopt(pycurl.DEBUGFUNCTION, test) 
c.setopt(pycurl.NOPROGRESS, 0) 
c.setopt(pycurl.PROGRESSFUNCTION, progress) 
c.perform() 

ответ

3

Это было на самом деле возобновления должным образом, однако, как представляется, начиная с самого начала еще раз, потому что длина от os.path.getsize (имя файла) не был добавлен существующий в функции прогресса. Просто небольшая ошибка! :)