質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

Q&A

解決済

2回答

8020閲覧

pythonのIndentationError: expected an indented blockエラーについて

hon.ki

総合スコア157

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

0グッド

0クリップ

投稿2018/12/03 13:41

前提・実現したいこと

pythonでの画像生成について勉強していた所、次のような問題が起きました。

発生している問題・エラーメッセージ

以下のソースコードのもと、terminal で python getimages.py tomato としたところ、
エラーとなりました。このエラーが解決できなくて、一人では行き詰ってしまい、質問させていただいた次第です。

エラーメッセージ

File "getimages.py", line 18
keyword = sys.argv[1]
^
IndentationError: expected an indented block

該当のソースコード

from flickrapi import FlickrAPI from urllib.request import urlretrieve import os, time, sys from tqdm import tqdm API_KEY = "XXX" SECRET = "XXXX" PER_PAGE = 300 # ダウンロードする画像の枚数 wait_time = 1 # インターバル if len(sys.argv) < 2: print('ダウンロードする画像のキーワードが未指定です。') else: keyword = sys.argv[1] savedir = "./" + keyword if os.path.exists(savedir) == False: os.mkdir(keyword) flickr = FlickrAPI(API_KEY, SECRET, format='parsed-json') result = flickr.photos.search( text = keyword, # 画像検索用のキーワード per_page = PER_PAGE, # 取得する画像の枚数 media = 'photos', sort = 'relevance', # 「関連度が高い順」を指定 safe_search = 1, # 1=「不適切コンテンツの除外」を指定 extras = 'url_q, licence' # 追加で取得したい情報の指定 ) pbar = tqdm(range(len(result['photos']['photo']))) er = 0 for photo, i in zip(result['photos']['photo'], pbar): try: url_q = photo['url_q'] filepath = savedir + '/' + photo['id'] + '.jpg' if os.path.exists(filepath): continue urlretrieve(url_q, filepath) time.sleep(wait_time) except: er += 1 continue pbar.update() print('ダウンロード数:'+str(i+1)) if 0 < er: print('URLの情報無し:'+str(er))
Python3.6 ### 試したこと ・PycharmのPreferences>Editor>Code Style>Python>Tabs and indentから、indentを4 → 2に変更してみましたが、同じエラーが起きました。 ・ keyword = sys.argv[1]の行のインデントを、足したり引いたりしましたが、エラーは解消されませんでした。 ・TabキーあるいはSpaceキーを使って、keyword = sys.argv[1]行のインデントを入力し直しましたが、エラーは解消されませんでした。 ### 補足情報(FW/ツールのバージョンなど) ・ Keras2.24, Tensorflow1.120 ・Pycharm Pycharmの設定は、Tab size:4, indent: 4, Continuation:8となっておりました。 実はこれは日経ソフトウェアのサンプルコードの一部なのですが、それがこの書かれ方に適合していないのではないかという考えでおります。しかし、どう直せばいいのか、具体的に想像がつきません。初歩的なことでしたら大変申し訳ないのですが、教えていただけますと幸いです。どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

コピペして実行してみましたが、再現しませんでした。

teratailに投稿するとtabが自動的にスペースに置換されてしまうのでこちらから窺い知ることはできませんが、
タブとスペースが混在しているのではないでしょうか。どちらかに統一しておくことをおすすめします(pythonで一般的に使われるのはスペース4つ単位のインデントです)。

投稿2018/12/03 13:51

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hon.ki

2018/12/03 14:10 編集

回答ありがとうごさいます。teratailに投稿するとtabが自動的にスペースに置換されてしまうのですね。 私の環境では、投稿したものをもう一度コピーベーストして実行しても、同じエラーになっております.....。 ということは、私の環境に、それ以外の問題があるのかもしれませんね。タブとスペースの混在には気をつけたいと思います。ありがとうございます。
guest

0

自己解決

最終的な問題は、恥ずかしながら私が気づかず説明できていなかったところにありました。Pycharm内のterminalにて、
PycharmProjects/Project1/t21901/augImages.pyを実行すべきところ、
PycharmProjects/Project1/augImages.pyを実行しており(試行錯誤のうちに、無意識にファイルをコピーしてProject1の直下に複製してしまっていました。)
実は、コード自体をダウンロードしてProject内に、ファイルごと当てはめたものだったのですが、サンプルファイルは'画像生成'まで含めて3つのソースファイルがまとまったものでした。(このファイルの名前がt21901です。)
そういうわけで、teratailに投稿して、tabが自動的にスペースに置換されたにも関わらず、それをコピーしても同様のエラーが出続けているように見えておりました。

つまり、質問させていただいた元々のエラーは、回答いただいた通りtabとスペースが混在していることで起きていたということで間違いなさそうです。ありがとうございました。

投稿2018/12/04 14:22

編集2018/12/04 14:24
hon.ki

総合スコア157

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問