2014-03-10 4 views
1

У меня очень большой скрипт Python, с которым я использую pyinstaller для создания exe. Мне нужно загрузить XML-файл, но хотелось бы, чтобы exe был как можно меньше, поскольку он уже становится довольно большим.Файл загрузки Python без внешней библиотеки

Есть ли способ в Python для получения файла из URL? Я не смог ничего найти без внешней библиотеки

+1

Keep это под подушкой: http://docs.python.org/2/library/urllib2 .html – SingleNegationElimination

+1

http://stackoverflow.com/questions/22676/how-do-download-a-file-over-http-using-python – radomaj

+2

Связанный: [Поток больших двоичных файлов с urllib2 в файл] (http: //stackoverflow.com/q/1517616/4279) – jfs

ответ

3

Вы можете использовать urllib.urlretrieve(), который сохраняет открытую страницу по указанному пути.

В качестве альтернативы вы можете открыть URL с urllib.urlopen(), а затем записать файл для чтения в двоичном режиме:

import urllib 
urllib.urlretrieve(url, destination_path) # First and short way 

with open(destination_path, 'wb') as f: # Equivalent to the first, but longer 
    f.write(urllib.urlopen(url).read()) 
+0

В Python 3 эти функции были перенесены на ['urllib.request'] (http://docs.python.org/3/library/urllib.request.html), поэтому используйте ['urllib.request.retrieve'] (http://docs.python.org/3/library/urllib.request.html#urllib.request.urlre trieve) и ['urllib.request.urlopen'] (http://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen) соответственно. –

+0

@ АндреТерра хорошая заметка, однако вопрос отмечен 'python-2.7' – vaultah

+1

-1:' f.write' не принимает 'urlopen()'. Вместо этого вы можете использовать 'shutil.copyfileobj (urllib2.urlopen (url), f)'. – jfs

Смежные вопросы