助け合いフォーラム
この問題はプレミアムコンテンツです。
「stdin, stdout, stderr =」の意味
問題文中のPythonコードに以下の記述があります。
「stdin, stdout, stderr = client.exec_command('show interface vlan 1')」
この行の意味は、client.exec_command()の関数を実行した戻り値の内容が
正常かエラーかを自動で判断して、標準出力か、標準エラー出力の該当する方に
出力するという意味でしょうか。
上記ですと、「stdin」の意味がわからないのですが、「stdin, stdout, stderr =」は
常に、stdin、stdout、stderrの3つのセットで記載するルールなのでしょうか。
ご存じのかたがおられたら教えて下さい。
宜しくお願いします。
client.exec_command()の関数を実行した戻り値が3個(標準入力、標準出力、標準エラー出力)あって、それぞれを変数stdin, stdout, stderr に代入する、という意味です。
上記ですと、「stdin」の意味がわからないのですが、
今の場合、実行しているコマンドがshow コマンドなのでstdin は役に立ちませんが、もし入力を受け取るようなコマンドを実行した場合、stdin からデータを流し込むことができます。
「stdin, stdout, stderr =」は
常に、stdin、stdout、stderrの3つのセットで記載するルールなのでしょうか。
違う名前の変数で受け取ることもできますがこれ以上わかりやすい名前もないでしょうし、この順番で3個返されたものを3個受け取らないとエラーになるようなので、ルールとまではいかないまでもベストプラクティスといえると思います。
コメント
この投稿に対して返信しませんか?
k kz5835
2023/05/01 21:11
tnishita2様 ご回答、有難うございます。そういうことなんですね。大変、勉強になりました。