2013-07-09 3 views
12

これは私のPythonスクリプト(hello.py)です、問題は、それがWindowsのコマンドラインプロンプトから実行することができないということですどのように私は、Windowsのコマンドラインの引数を使用してPythonスクリプトを実行してください

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

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

C:私は、このコマンドを使用\ Python27>ハロー1 1 を、それは残念ながら動作しませんでした、誰かは、コマンドラインからプログラムを実行するには

+1

「hello.pyは」 'PATH'ディレクトリにある、と'ハロー1 1 'は、コマンドライン引数を渡すことはありません実行し、その後の.pyファイルの関連付けがある場合 – thibauts

+0

をフォーマットする適切なコードを使用してください壊れた。 CMDまたはPowerShellが "hello.py"を見つけられない場合、.PYは 'PATHEXT'にありません。'python hello.py 1 1'を実行する必要はありません。これは、hello.pyのための修飾されたパスを使用するか、最初にそのディレクトリに変更する必要があるため、面倒です。 – eryksun

答えて

7

を助けてくださいことが、あなたはこのように、Pythonインタプリタを呼び出す必要があります:

C:\Python27>python hello.py 1 1 

コードを別のディレクトリに置く場合は、PATH環境変数にpythonバイナリパスを設定して実行する必要があります。詳しい指示はhereです。

+0

またはpythonを書き直してください。my_full_path \ hello.py 1 1 – doctorlove

+0

ありがとうございました。この方法でも使用しました。環境変数(PATH、パス、pathext)を定義しました。成功しません。 – user2563817

+0

必ず閉じてから再度開きますPATHに変更を加えたときに使用しているコンソール。 – thibauts

2

インデントが壊れています。これは、それを修正する必要があります

明らか
import sys 

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

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

、あなたが関数内if __name__声明を置く場合は、その関数を実行した場合、それだけで今までに評価されます。問題は次のとおりです。前述のステートメントのポイントは、最初に関数を実行することです。

+0

このコードには本当にありがとうございましたが、実際には何が間違っているのかを知りたいのですが、詳細はどこにありますか、どうもありがとうございました – user2563817

+1

何が間違っているか教えてください。 –

14
  • import sys of 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 __name__ == "__main__": 
    a = int(sys.argv[1]) 
    b = int(sys.argv[2]) 
    hello(a, b) 
+0

'import'はトップレベルにはありません。これはお勧めできません。 'def hello'の前に配置する必要があります – ElmoVanKielmo

+0

@ElmoVanKielmo、アドバイスありがとうございます。私はコードを変更しました。 – falsetru

+0

'print'をかっこなしで使用することは、Python 2.7ではお勧めできません。 ) – Agostino

1
import sys 

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

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

またPythonスクリプトを呼び出す方法について@thibautsの回答を参照してください。ここで

1

をまとめると、前の回答のすべてです:

  • モジュールは、機能の外にインポートする必要があります。
  • 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 
関連する問題