2016-11-29 4 views
0

Я пытаюсь понять, почему мой открытый вызов Python говорит, что файл не существует, когда он это делает. Если я вхожу в тот же самый файл url в браузере, появляется фотография.Python open говорит, что файл не существует, когда он

Сообщение об ошибке я получаю:

No such file or directory: 'https://yhistory.s3.amazonaws.com/media/userphotos/1_1471378042183_cdv_photo_033.jpg' 

Питон код:

full_path_filename = 'https://' + settings.AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/' + file_name 
fd_img = open(full_path_filename, 'r') 

мне было интересно, если эта проблема что-то делать с файлом, в ведре AWS S3, но Я могу подключиться к ведру и перечислить его содержимое.

+0

Это имя файла на вашем компьютере, или вы пытаетесь получить к нему доступ через Интернет? –

+0

Если вы пытаетесь получить доступ к файлам через Интернет, вам необходимо использовать модуль, например 'urllib2' или' request' –

+0

На моем ноутбуке подключен код Python, подключенный к Интернету. –

ответ

3

Если вы пытаетесь открыть файл через интернет Вы должны сделать что-то вроде этого (при условии, что вы используете Python 3):

import urllib.request 
full_path_filename = 'https://' + settings.AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/' + file_name 

file = urllib.request.urlopen(full_path_filename) 

Это будет скачать сам файл. Вы можете использовать file как другой файл, такой как объект.

+2

Python 'request' - мощная библиотека HTTP, которая удобно обрабатывает сложные вещи, такие как файлы cookie и SSL. См. [Этот вопрос] (http://stackoverflow.com/questions/13137817/how-to-download-image-using-requests) для некоторых примеров того, как деконструировать объекты ответа 'запросы'. Кроме того, поскольку вы используете службу, в которой вы, вероятно, должны войти в систему, вам может потребоваться выполнить две транзакции: одну, чтобы предоставить учетные данные для входа и получить файл cookie сеанса, а другой - для получения файлов. –

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