web-dev-qa-db-ja.com

Windowsコマンドラインで引数を使用してPythonスクリプトを実行する方法

これは私のpython hello.pyスクリプトです:

def hello(a,b):
    print "hello and that's your sum:"
    sum=a+b
    print sum
    import sys

if __== "__main__":
    hello(sys.argv[2])

問題は、Windowsコマンドラインプロンプトから実行できないことです。次のコマンドを使用しました。

C:\Python27>hello 1 1

しかし、残念ながらうまくいきませんでした。誰か助けてください。

40
user2563817
  • import sys hello関数がありません。
  • 引数はintに変換する必要があります。
  • 'を含む文字列リテラルはエスケープするか、"で囲む必要があります。
  • コマンドラインでpython hello.py <some-number> <some-number>を使用してプログラムを呼び出しましたか?

import sys

def hello(a,b):
    print "hello and that's your sum:", a + b

if __== "__main__":
    a = int(sys.argv[1])
    b = int(sys.argv[2])
    hello(a, b)
39
falsetru

コマンドラインからプログラムを実行するには、次のようにpythonインタープリターを呼び出す必要があります。

C:\Python27>python hello.py 1 1

コードが別のディレクトリにある場合は、PATH環境変数にpythonバイナリパスを設定して、実行することもできます。詳細な手順を見つけることができます こちら

12
thibauts

これまでの回答をすべてまとめたものは次のとおりです。

  • モジュールは関数の外部にインポートする必要があります。
  • hello(sys.argv [2])はifステートメント内にあるため、インデントする必要があります。
  • helloには2つの引数があるため、2つの引数を呼び出す必要があります。
  • 端末から関数を呼び出す限り、python .pyを呼び出す必要があります...

コードは次のようになります。

import sys
def hello(a, b):
    print "hello and that's your sum:"
    sum = a+b
    print sum

if __name__== "__main__":
    hello(int(sys.argv[1]), int(sys.argv[2]))

次に、次のコマンドでコードを実行します。

python hello.py 1 1
7
C. Glass

インデントが壊れています。これで修正されます:

import sys

def hello(a,b):
    print 'hello and thats your sum:'
    sum=a+b
    print sum

if __== "__main__":
    hello(sys.argv[1], sys.argv[2])

明らかに、if __name__ステートメントinsideを関数に指定すると、その関数を実行した場合にのみ評価されます。問題は、このステートメントのポイントは、最初に関数を実行することです。

4
Nils Werner
import sys

def hello(a, b):
    print  'hello and that\'s your sum: {0}'.format(a + b)

if __== '__main__':
    hello(int(sys.argv[1]), int(sys.argv[2]))

さらに、pythonスクリプトの呼び出し方法に関する@thibautsの回答を参照してください。

1
ElmoVanKielmo