を、私は、少なくとも二つのことをキャッチすることができ働かない:ここに私のコードの一部です。
catch-all except
節はコードの匂いで、エラー状態の本当の原因を隠します。代わりに、except
を予期している例外に制限するか、例外を出力して、実際の問題についてヒントを得てください。私が疑われるとして、[更新]
when i tap 1, i won t compilator to use CONTOUR in place of mode,i get this kind of error: Traceback (most recent call last): File "./edytor.py", line 65, in img = img.filter(ImageFilter.mode) AttributeError: 'module' object has no attribute 'mode'
はい
power = input()
if power == 1:
mode = "CONTOUR"
elif power == 2:
mode = 'EDGE_ENHANCE_MORE'
elif power == 3:
mode = "EDGE_ENHANCE"
else:
print "Wrong option"
try:
img = img.filter(getattr(ImageFilter, mode))
except Exception as e:
print "Ooops! Got a '{}' exception ({})".format(type(e), str(e))
else:
img.show()
:
はこれを試してみてください。これはImageFilter
モジュールで「モード」と呼ばれる属性にアクセスしようとします(とモジュールが何mode
属性を持っていないので、あなたはAttributeError
を取得):
ImageFilter.mode
あなたはそれを望んでいません。代わりに、ImageFilter.CONTOUR
が必要です。では、変数に名前が格納されていれば、Pythonでどのように属性を動的に呼び出すことができますか? ImageFilter[mode]
のようなものはJavascriptでは動作しますが、Pythonでは動作しません。 Pythonでは、十分に簡単に使用する必要があります。getattr
:
getattr(ImageFilter, "CONTOUR")
オプションは「機能しません」とはどういう意味ですか? – asongtoruin
おそらく、一貫性のために引用符の間に 'EDGE_ENHANCE'を置くべきでしょう。あなたは 'NameError'例外を受け取りますか? –
私が1をタップすると、私はモードの代わりにCONTOURを使用するためにコンパイラを獲得しました。この種のエラーが発生します:トレースバック(最新のコールが最後): ファイル "./edytor.py"、行65、 img = img.filter(ImageFilter.mode) AttributeError: 'module'オブジェクトに 'mode'属性がありません –
Geperd