Сохранение изображения в python с использованием urllib
Я пытаюсь сохранить изображение из Интернета, используя urllib, и получаю эту ошибку:
[Wed Oct 17 10:03:43 2012] [error] [client 223.232.227.124] urllib.urlretrieve(image,ban)
[Wed Oct 17 10:03:43 2012] [error] [client 223.232.227.124] File "/usr/lib/python2.6/urllib.py", line 93, in urlretrieve
[Wed Oct 17 10:03:43 2012] [error] [client 223.232.227.124] return _urlopener.retrieve(url, filename, reporthook, data)
[Wed Oct 17 10:03:43 2012] [error] [client 223.232.227.124] File "/usr/lib/python2.6/urllib.py", line 243, in retrieve
[Wed Oct 17 10:03:43 2012] [error] [client 223.232.227.124] tfp = open(filename, 'wb')
[Wed Oct 17 10:03:43 2012] [error] [client 223.232.227.124] IOError: [Errno 13] Permission denied: '/public/env/lib/python2.6/site-packages/project-0.0-py2.6.egg/project/images/series/graphical/104281-g2.jpg'
Код:
ban='/public/env/project/project/images/series/%s'%(banner)
image='http://www.thetvdb.com/banners/%s'%(banner)
urllib.urlretrieve(image,ban)
Код прекрасно работает на моем локальном хосте с использованием сервера официантки Pyramid, а также с использованием mod_wsgi, но не на рабочем сервере.
Я использую Pyramid Framework для разработки.
1 ответ
Это проблема с разрешениями. У вас нет разрешения на запись в то место, которое вы пытаетесь найти на сервере. Попробуйте другое место, где у вас есть разрешения или установите соответствующие разрешения для этого каталога.
urlretrieve(url, filename=None, reporthook=None, data=None)
Второй аргумент - это имя файла, в который вы хотите написать. Поскольку вы работаете из веб-приложения, процесс, который запускает веб-приложение, должен иметь разрешение на местоположение, в которое вы пытаетесь написать.