Ahojte, viem stiahnut velky subor z z githubu takto:
file_content = requests.get(file_url, allow_redirects=True) file_data = base64.b64decode(file_content.content) open(output, 'wb').write(file_data) Kedze to dlho trva, chcem tam implementovat progressbar a tu zacinaju moje problemy ;-). Nasiel som ze by malo fungovat nieco taketo: file_size = 19335882 # toto viem vopred req = requests.get(file_url, allow_redirects=True, stream=True) block_size = 1024 num_bars = file_size / (block_size*2) bar = Bar(f'Downloading {filename}', max=num_bars, suffix='%(percent).1f%% - %(eta)ds') bytes_transferred = 0 with open(output, "wb") as file: for chunk in req.iter_content(chunk_size=block_size): bytes_transferred+= len(chunk) if chunk: file.write(chunk) bar.next() bar.finish() print(bytes_transferred) Moje problem: Velkost prenesenych dat nesedi s velkostou suboru (26640760 vs 19335882 t.j. progress bar nezobrazuje korektny progress) z dovodu, ze github namiesto suboru posiela subor zabaleny v json a encodovany v base64. Workaround by mohol byt, ze ak viem velkost finalneho suboru, pokusim sa vypocitat velkost json filu (req.headers.get('Content-Length') v tomto pripade na githube nefunguje :-( ). Z neho by som po stiahnuti do pamate extrahoval content, dekodoval ho a az potom ulozil... Otazkou je ci nie je inteligentnejsi sposob ako to urobit... PS: moja testovacia url je: https://api.github.com/repos/tesseract-ocr/tessdata/git/blobs/b01dab8de8174496a0012bf85296943b3e7c81d7 Zd.
_______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz