web-dev-qa-db-ja.com

引数をpythonシェルのプログラムに渡す

シェルスクリプト内でpythonスクリプトを実行できません。以下は3つの引数がpythonスクリプトに渡されているscript.shファイルです。

python main.py 1.0 0.1 10

pythonプログラムは引数を読み取っていません。コマンドラインターミナルで同じ行を実行すると、正常に実行されます。

<< >>ハードコードされたmain.pyで引数を定義し、引数なしでコマンドを実行することで確認しました。それでも動作しません。 main.pyは、同じディレクトリにある他のファイルも使用しています。また、スクリプトも同じディレクトリにあります。

4
hasnain rehman

貼り付けたSyntaxErrorから、スクリプトを間違ったバージョンのpython、具体的にはPythonではなくPython 2で実行しているようです。 = 3(SyntaxErrorが注釈について不平を言っている可能性があるため これはPython にのみ存在します)。

実際に得たエラーを読むと、これは引数(質問のタイトル)を渡すこととはまったく関係がないことがわかります。

正しい解決策は、スクリプトの前にインタープリター名を付けてスクリプトを呼び出すのではなく、独自のインタープリターを呼び出せるようにすることです。

./main.py 1.0 0.1 10

の代わりに

python main.py 1.0 0.1 10

正しく記述されていれば、スクリプトの最初に Shebang行 があり、実行に必要なインタープリターを指定します。これはpython3または同様のものです。

スクリプトに独自のインタープリターを指定させることで、呼び出し側のスクリプトはどのインタープリターが必要かを知る必要も、気にする必要もありません。スクリプトを完全に別の言語を使用するように書き換えることもできます(または、スクリプトではないコンパイル済みのバイナリで置き換えることもできます)。呼び出し側を変更して、別の言語で呼び出す必要はありません。

2
Celada