2016-08-15 4 views
0

Я новичок в Python 3.4.5, который я изучаю онлайн, просматривая видео с некоторыми хорошими знаниями C. Я пытаюсь загрузить изображение через Python, который я не могу сделать из-за этого ошибка.Ошибка синтаксиса Python request.py

Код:

import random 
import urllib.request 

def img(url): 
    full='name'+'.jpeg' 
    urllib.request.urlretrieve(url,full) 

img("http://lorempixel.com/400/200")

Ошибка:

Traceback (most recent call last): 
    File "image.py", line 2, in <module> 
    import urllib.request 
    File "/home/yuvi/pyth/urllib/request.py", line 88, in <module> 
    import http.client 
    File "/usr/local/lib/python3.4/http/client.py", line 69, in <module> 
    import email.parser 
    File "/usr/local/lib/python3.4/email/parser.py", line 12, in <module> 
    from email.feedparser import FeedParser, BytesFeedParser 
    File "/usr/local/lib/python3.4/email/feedparser.py", line 27, in <module> 
    from email import message 
    File "/usr/local/lib/python3.4/email/message.py", line 16, in <module> 
    from email import utils 
    File "/usr/local/lib/python3.4/email/utils.py", line 31, in <module> 
    import urllib.parse 
    File "/home/yuvi/pyth/urllib/parse.py", line 239, in <module> 
    _DefragResultBase.url.__doc__ = """The URL with no fragment identifier.""" 
AttributeError: readonly attribute 
+1

Вы используете модуль * Python 3 * в Python 2. Вы не можете, Python 3 код не имеет обратной совместимости. Почему вы используете стандартную библиотеку Python 3 в Python 2? –

+1

Если вы следите за учебниками, которые ожидают использования Python 3, тогда установите Python 3 и используйте это. Не пытайтесь сделать Python 3 учебниками на Python 2. –

+0

Связано в противоположном направлении: [Необходимо установить urllib2 для Python 3.5.1] (https://stackoverflow.com/q/34475051) –

ответ

0

Try:

def img(url): full='name'+'.jpeg';urllib.urlretrieve(url,full) 

urllib.request не существует в Python 2.x, который, кажется, ваш случай
так не пытайтесь импортировать это во вторую строку кода

плюс вы сделали опечатку (забытая точка с запятой), которая работает как разделитель операторов при написании операторов встроенных функций. Аналогично:

def img(url): 
    full='name'+'.jpeg' 
    urllib.urlretrieve(url,full) 
+0

А? Кто-нибудь (кроме вас) когда-либо упоминал о встроенных функциях здесь? – Melebius

+0

@Melebius вы должны увидеть тег 'edit' в вопросе. До редактирования это была встроенная функция, поэтому ей пришлось отвечать в этой форме. – Yogesh

+0

Я открыл историю сообщений и ничего не нашел о встроенной функции, прежде чем написал свой предыдущий комментарий. – Melebius

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