Traceback (most recent call last):
File "C:\Users\saikoro\AppData\Local\Programs\Python\Python310\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
NameError: name 'MyOpenpyxl' is not defined
C:\Users\my_name>python
Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
サイコロさんの投稿
(投稿ID: 5449) 添付ファイルのダウンロード権限がありません
動画の59:00頃の質問です。
__enter__や__exit__のメソッドをそのオブジェクトが持っているというのを確認するおすすめの方法は?
での回答ですが、
私も動画の内容を真似して
Python Consoleに以下を記載したのですが、
以下エラーで動画と同様の挙動になりませんでした。同様の挙動になるようにご教示いただきたいです。
また、
Evaluate>Expression へ
hastter(MyOpenpyxl(file_path_str)."__enter__")
と入力してエンターを押すと
SyntaxError.invalid syntax
となりこちらも動画と同様の挙動になりません。(エラー画面添付します)
ご教示いただきたいです。何卒宜しくお願いいたします。
(さらっと学ぶ、Python基礎文法 - section3が未視聴のため陥っているミスとかでしたら、こちら視聴してから再度確認したいと思います)
小川 慶一さんのコメント
(コメントID: 8076)
「MyOpenpyxl が定義されていない」とのことですね。
Python Console で、 module 内で定義済の MyOpenpyxl を import していないのでは?と思います。
hasattr 関数 (hastter てはない)は、引数を2つ受け取ります。
第一引数は、オブジェクト。第二引数は、属性名(文字列)です。
引数ですので、これらの間はカンマ「, 」で区切ります。
ピリオド「. 」ではありません。
シンプルに回答すると、まずは以上のとおりです。
理解が難しいようでしたらその旨コメントにてお知らせください (^^
サイコロさんのコメント
(コメントID: 8077)
Python Consoleで
MyOpenpyxl.__dict__
と入力する前に何か書いていたなと思い再度動画見返し、
from demo_221009.pathlib_xlsx_sample_with_wrapped import MyOpenpyxl
を入力してから
MyOpenpyxl.__dict__
をしたら同様の挙動になりました。
Pycharmで
TerminalとPythonConsoleとモジュールでの実行の位置づけが良く理解できておりません。
仮想環境(venv)を作り、Terminalでライブラリインポート(openpyxl等)して、さらにモジュールでもインポート文(import openpyxl)書いて実行する
は動画講座でも良く出てくるのでそのような関係で書いて動かしているので親しみありますが、
PythonConsoleはなんですか?モジュールの実行の途中でもConsolに実行結果が記載されたりエラー記載されますが、
同様の物なのでしょうか??Consoleがよくわかりません。
Evaluate>Expression へ
hasattr(MyOpenpyxl(file_path_str),"__enter__")
と入力したら動画ど同様の挙動になりました。
ご指摘いただきありがとうございました。
小川 慶一さんのコメント
(コメントID: 8078)
> Consoleがよくわかりません。
PowerShell等で
と入力すると、Pythonのプログラムを実行できるモードになりますね。
そして、 import 文を入力したり、
と入力したりするわけです。
Pycharm の cosole は、PowerShell等で
と入力するところまでを自動的にやってくれた状態のコマンド入力画面です。
そして、それだけではつまらないので、文字に色をつけたり、Pycharm のコードウィンドウ内でブレークポイントが設定されたところがあれば、 debug 実行時にはそこでコードを一時中断できるようにしたり、といった機能が追加されているものです。
また、モジュールのタブを右クリックして「実行」を選ぶことで、そのモジュールに書かれた Python のプログラムを実行することもできます。
このときは、 print 文等での出力先がこの console になります。
完全な説明でないのですが...上記で、まずは、どこまで不明点解消できたでしょうか。
サイコロさんのコメント
(コメントID: 8079)
Pythonのプログラム実行はPowerShellで指示文を書く方法がそもそも存在するが、
pythonプログラムを実行しやすくしたのがpycharmのPythonConsolや
モジュールのタブを右クリックして「実行」しての操作があるという感じでしょうか。
また、pycharmにあるTerminalはWindowsのコマンドプロンプトもしくはPowerShellと同等の機能を持った指示文を書き実行操作をするところ(いちいちPowershellを起動してライブラリをインストールするのが手前のためTerminalがある)という感覚でいるのですがその認識でいて大丈夫そうでしょうか??
小川 慶一さんのコメント
(コメントID: 8080)
サイコロさん的には、その説明で、当初の問題の理由解説と関連の補足説明になっている感じはあるでしょうか。
サイコロさんのコメント
(コメントID: 8081)
"モジュールのタブを右クリックして「実行」操作、出力先はConsol"でPythonを動かしていたのに、
「__enter__や__exit__のメソッドをそのオブジェクトが持っているというのを確認する」ために
Python Consoleを使用して確認するのかが良く分からなかったです。
ご回答いただき、実行方法が複数存在し、
モジュールのタブを右クリックして「実行」の場合では関数を使って存在するかを質問していく感じで調べることしかできないのですが、Python Consoleを使用してconsoleにMyOpenpyxl.__dict__と入力確認すると持っているメソッドを返してくれるというのが分かりました。
モジュールタブを右クリックして「実行」中に
Evaluate>Expressionや、print 文等での出力先の consoleにMyOpenpyxl.__dict__と入力したら、メソッドが返ってきたらいいのにと思いましたが、
(それぞれの機能を良く理解していないので、このような発想になるのかなと思っています。。)
>Pycharm の cosole は、PowerShell等で
>python
>と入力するところまでを自動的にやってくれた状態のコマンド入力画面です。
>そして、それだけではつまらないので、文字に色をつけたり、Pycharm のコードウィンドウ内でブレークポイントが設定されたところがあれば、 debug 実行時にはそ>こでコードを一時中断できるようにしたり、といった機能が追加されているものです。
とのことで、モジュールタブを右クリックして「実行」の方法もPycharmのcosoleの存在目的同様にモジュールから実行しやすいようにpycharmが設定してくれているので、そこではMyOpenpyxl.__dict__と入力しても想定外の指示文(MyOpenpyxl.__dict__とかを利用するために設定されていない)なのでそこではやらないという感じなのかなと思いました。
pythonのcosoleと同様の見た目の画面でTerminalがあり、さらに同じ見た目にWindowsのコマンドプロンプトもしくはPowerShellがあるのですが、それはどのような目的で存在しているのか良く理解しておらず、それぞれどんなときに使い分け利用するのか知りたいと思いました。