Как загружать файлы с помощью Python?
Всем привет. Я новичок в Python и использую Python 2.5 на CentOS.
Мне нужно скачать такие файлы, как WGET
do.
Я сделал поиск, и есть некоторые решения, очевидный способ:
import urllib2 mp3file = urllib2.urlopen("http://www.example.com/songs/mp3.mp3") output = open('test.mp3','wb') output.write(mp3file.read()) output.close()
Это прекрасно работает. Но я хочу знать, если mp3-файл ОЧЕНЬ большой, например, 1Gb, 2Gb или даже больше. Может ли этот фрагмент кода работать? Есть ли лучшие способы загрузки больших файлов в Python, возможно, с индикатором выполнения, например, WGET
.
Большое спасибо!
- Python – могу ли я знать, произошла ли печать или нет?
- не может редактировать строку в командной строке python в Linux
- Если операторы и сценарии одного сценария python из командной строки
- Как скомпилировать проект Visual Studio из командной строки?
- Выполнение командной строки в другой папке
Есть более простой способ:
import urllib urllib.urlretrieve("http://www.example.com/songs/mp3.mp3", "/home/download/mp3.mp3")
Для действительно больших файлов ваш код будет использовать много памяти, так как вы сразу загружаете весь файл в память. Возможно, лучше читать и записывать данные в виде кусков:
from __future__ import with_statement import urllib2 mp3file = urllib2.urlopen("http://www.example.com/songs/mp3.mp3") with open('test.mp3','wb') as output: while True: buf = mp3file.read(65536) if not buf: break output.write(buf)
Почему бы просто не позвонить wget
тогда?
import os os.system ("wget http://www.example.com/songs/mp3.mp3")
ваш текущий код будет считывать весь поток в память перед записью на диск. Поэтому для случаев, когда файл больше, чем доступная память, вы столкнетесь с проблемами.
Чтобы решить эту проблему, вы можете читать фрагменты за раз и записывать их в файл.
(скопировано из потоковых больших двоичных файлов с urllib2 в файл )
req = urllib2.urlopen(url) CHUNK = 16 * 1024 with open(file, 'wb') as fp: while True: chunk = req.read(CHUNK) if not chunk: break fp.write(chunk)
«немного экспериментируйте с различными размерами CHUNK, чтобы найти« сладкое пятно »для ваших требований».
- Как запустить ipython из оболочки, запустив «python …»?
- запустить скрипт python из командной строки, а затем ввести интерактивный режим
- Как я могу указать, что некоторые аргументы командной строки являются обязательными в Python?
- Как создать функцию «cmd» в Python?
- Открытие Pycharm от терминала с помощью текущего пути
- Ускорение первоначального выполнения приложения командной строки Python
- Python: запустить функцию из командной строки
- В чем разница между запуском ./file.py и python file.py?
- Получение вывода команды скрытой консоли?