PowershellからPythonのdefに引数を渡したい

投稿者: Anonymous

PowershellからPython(ver.3.8.1)のdefに引数を渡して実行したいのですが、
うまく渡すことができません。
今回、初めてPythonを使います。
テストで下記のような簡単な関数を作ってみました。
実行すると

NameError: name ‘a’ is not defined

というエラーが発生します。
ご教示のほど、よろしくお願いします。

calc.py

def add(a):
    return 10 + a

main.py

from calc import add
Anser = add(a)
print(Anser)

Powershell

$a = 5
python.exe main.py $a

解決

Powershellの変数とPythonの変数は全く別のものです。
PowershellからPythonを呼び出した時には、コマンドライン引数をsys.argvなどの命令で取得する必要があります。

またsys.argvは引数を文字列型の配列で保持していますので、値を適切な型にキャストします。
main.pyを下記のように修正すると動作するはずです。

from calc import add
import sys
a = int(sys.argv[1])
Anser = add(a)
print(Anser)
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *