FileNotFoundError: [Errno 2] No such file or directory:
解決したいこと
FileNotFoundError: [Errno 2] No such file or directory:のエラーを解決したいです。
状況としてはFlickrから画像データをダウンロードするということを実行しようとしたときです。
発生している問題・エラー
intro_deep_learning % python download.py crow
Traceback (most recent call last):
File "http://download.py", line 29, in <module>
urlretrieve(url_q,filepath) #ファイルダウンロードを実行
File "/Users/**/.pyenv/versions/anaconda3-2019.10/envs/tf112cpu/lib/python3.6/urllib/request.py", line 258, in urlretrieve
tfp = open(filename, 'wb')
FileNotFoundError: [Errno 2] No such file or directory: './crow/51543612941.jpg'
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
該当するソースコード
from flickrapi import FlickrAPI #FlikcrAPIクライアントのクラス定義
from urllib.request import urlretrieve #コマンドラインからhttp通信をする関数
import os, time, sys #Pythonからシステムにアクセスする関数, タイマー関数
key = "******"
secret = "******"
wait_time = 1 #リクエストを発行するインターバル
animalname = sys.argv[1] #コマンドラインで2番目の引数を取得
savedir = "./" + animalname #引数で与えた単語名でフォルダーを作成
flickr = FlickrAPI(key, secret, format='parsed-json')
result = flickr.photos.search(
text = animalname, #検索ワード
per_page = 400, #検索数上限
media = 'photos', #データタイプ
sort = 'relevance', #結果表示順, 最新から
safe_search = 1, #子どもに不敵な画像を除外
extras = 'url_q, licence' #オプション。データURL, ライセンスタイプ
)
photos = result['photos']
for i, photo in enumerate(photos['photo']):
url_q = photo['url_q'] #photoオブジェクトからダウンロードURLを取得
filepath = savedir + '/' + photo['id'] + '.jpg' #ファイル名をフルパスで生成
if os.path.exists(filepath): continue #ファイルがあれば次へ
urlretrieve(url_q,filepath) #ファイルダウンロードを実行
time.sleep(wait_time) #サーバー負荷を考慮して1秒あける
自分で試したこと
参考記事を調べたのですがわかりませんでした。
追記)
最終的にコードは以下のようになりました。
# -*- coding: utf-8 -*-
from flickrapi import FlickrAPI #FlikcrAPIクライアントのクラス定義
from urllib.request import urlretrieve #コマンドラインからhttp通信をする関数
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
import os, time, sys #Pythonからシステムにアクセスする関数, タイマー関数
key = "*****"
secret = "*****"
wait_time = 1 #リクエストを発行するインターバル
animalname = sys.argv[1] #コマンドラインで2番目の引数を取得
savedir = "./" + animalname #引数で与えた単語名でフォルダーを作成
flickr = FlickrAPI(key, secret, format='parsed-json')
result = flickr.photos.search(
text = animalname, #検索ワード
per_page = 400, #検索数上限
media = 'photos', #データタイプ
sort = 'relevance', #結果表示順, 最新から
safe_search = 1, #子どもに不敵な画像を除外
extras = 'url_q, licence' #オプション。データURL, ライセンスタイプ
)
photos = result['photos']
for i, photo in enumerate(photos['photo']):
url_q = photo['url_q'] #photoオブジェクトからダウンロードURLを取得
filepath = savedir + '/' + photo['id'] + '.jpg' #ファイル名をフルパスで生成
if os.path.exists(filepath): continue #ファイルがあれば次へ
urlretrieve(url_q,filepath) #ファイルダウンロードを実行
time.sleep(wait_time) #サーバー負荷を考慮して1秒あける
0