Pobierz duży plik w Pythonie z żądaniami
Zapytania
https://requests.readthedocs.io/
to naprawdę dobra biblioteka. Chciałbym go używać do pobierania dużych plików (> 1 GB).
Problem w tym, że nie jest możliwe przechowywanie w pamięci całego pliku, muszę go czytać kawałek po kawałku. I to jest problem z następującym kodem
import requestsdef DownloadFile(url)
local_filename = url.split('/')[-1]
r = requests.get(url)
f = open(local_filename, 'wb')
for chunk in r.iter_content(chunk_size=512 * 1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.close()
return
Z jakiegoś powodu to nie działa w ten sposób. Nadal ładuje odpowiedź do pamięci przed zapisaniem jej do pliku.
UPDATE
Jeśli potrzebujesz małego klienta (Python 2.x/3.x), który może pobierać duże pliki z FTP, możesz go znaleźć
tutaj
https://github.com/keepitsimple/pyFTPclient... Obsługuje wielowątkowość & amp; ponowne połączenia (monitoruje połączenia), a także konfiguruje ustawienia gniazda dla zadania rozruchu.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
5 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Zwróć uwagę, że liczba bajtów zwrócona przez nie jest dokładnie równa ; oczekuje się, że będzie to liczba losowa, która jest często znacznie większa i oczekuje się, że będzie się różnić w każdej iteracji.
Widzieć
https://requests.readthedocs.i ... kflow
https://requests.readthedocs.i ... kflow
i
https://requests.readthedocs.i ... ntent
https://requests.readthedocs.i ... ntent
do wykorzystania w przyszłości.
Anonimowy użytkownik
Potwierdzenie od:
i https://docs.python.org/3/libr ... leobj
:
Spowoduje to przeniesienie pliku na dysk bez nadmiernego wykorzystania pamięci, a kod jest prosty.
Anonimowy użytkownik
Potwierdzenie od:
Lub w ten sposób, jeśli chcesz zapisać go w pliku tymczasowym:
Obserwowałem proces.:
Widziałem, jak plik rośnie, ale użycie pamięci pozostało na poziomie 17 MB. Czy coś mi brakuje?
Anonimowy użytkownik
Potwierdzenie od:
Swoją drogą, jak ustalisz, że odpowiedź została załadowana do pamięci?
Wygląda na to, że Python nie zrzuca danych do pliku od innych
pytania
https://coderoad.ru/7127075/
Więc możesz spróbować i , aby wymusić zapis pliku i zwolnić pamięć;
Anonimowy użytkownik
Potwierdzenie od:
w tym mechanizm „pobierz jako” i „ponów”: