On 2015-07-02 21:27, [email protected] wrote:
This is my final version which doesn't work. :( Actually, it works with another file on another server, but doesn't work with mp4 files on this particular server.I really don't know what to do? Regards. import os import urllib.request def Download(rfile, lfile): retval = False if os.path.isfile(lfile): lsize = os.stat(lfile).st_size else: lsize = 0 req = urllib.request.Request(rfile) rfsize = urllib.request.urlopen(req).length req.add_header('Range', "bytes={}-".format(lsize)) response = urllib.request.urlopen(req) with open(lfile, 'ab') as out_file: while True: try: chunk = response.read(64 * 1024) # chunk = response.read(128) if not chunk: break out_file.write(chunk) out_file.flush() lfsize = os.stat(lfile).st_size print("{0:.2f}".format(lfsize / rfsize * 100)) except ConnectionResetError as e: print('Exception ConnectionResetError {0}'.format(os.stat(lfile).st_size)) response = urllib.request.urlopen(req) if lfsize == rfsize: retval = True return retval while not Download('http://video.hrt.hr/2906/otv296.mp4', 'otv296.mp4'): print('1')
If a ConnectionResetError is raised, it'll restart the request from the beginning, but continue appending to the same file. You should reset the writing too. -- https://mail.python.org/mailman/listinfo/python-list
