助け合いフォーラム

Cisco

CCNP ENCOR(350-401)
問題ID : 23800
問題を開く
以下のPythonコードについて正しいものはどれか。(2つ選択)

この問題はプレミアムコンテンツです。

上に戻る

「stdin, stdout, stderr =」の意味

公開日 2023/05/01

問題文中のPythonコードに以下の記述があります。
「stdin, stdout, stderr = client.exec_command('show interface vlan 1')」

この行の意味は、client.exec_command()の関数を実行した戻り値の内容が
正常かエラーかを自動で判断して、標準出力か、標準エラー出力の該当する方に
出力するという意味でしょうか。

上記ですと、「stdin」の意味がわからないのですが、「stdin, stdout, stderr =」は
常に、stdin、stdout、stderrの3つのセットで記載するルールなのでしょうか。

ご存じのかたがおられたら教えて下さい。
宜しくお願いします。

2023/05/01 21:07

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様 ご回答、有難うございます。そういうことなんですね。大変、勉強になりました。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?