7

私はPython 2.7を使用しています.1つのコマンドライン引数を必要とする次の簡単なスクリプトがあります:

#!/usr/bin/env python

import sys

if (len(sys.argv) == 2):
   print "Thanks for passing ", sys.argv[1]
else:
   print "Oops."

コマンドラインから次のようなことができます:

My-Box:~/$ ./useArg.py asdfkjlasdjfdsa
    Thanks for passing  asdfkjlasdjfdsa

またはこれ:

My-Box:~/$ ./useArg.py 
    Oops.

インタラクティブエディターから同様のことをしたいと思います:

>>> import useArg asdfasdf
  File "<stdin>", line 1
    import useArg asdfasdf
                         ^
SyntaxError: invalid syntax

しかし、方法がわかりません。対話型エディタでインポート/リロードするパラメータを渡すにはどうすればよいですか?

4

1 に答える 1

6

できません。コードを関数内にラップする

#!/usr/bin/env python

import sys

def main(args):
    if (len(args) == 2):
        print "Thanks for passing ", args[1]
    else:
        print "Oops."

if __name__ == '__main__':
    main(sys.argv)

コマンドラインからスクリプトを実行する場合、インタープリターから使用する場合は、以前と同じように実行できます。

import useArg
useArg.main(['foo', 'bar'])

この場合、リストの最初の位置にダミーの値を使用する必要があるため、ほとんどの場合、より良い解決策はargparse ライブラリを使用することです。メイン関数を呼び出す前に、コマンド ライン引数の数を確認することもできます。

import sys

def main(arg):
    print(arg)

if __name__ == '__main__':
    if len(sys.argv) == 2:
        main(sys.argv[1])
    else:
        main('Oops') 

ここで実行すると何が起こっているのかについての良い説明を見つけることができますif __name__ == '__main__':: What does if __name__ == "__main__": do?

于 2013-09-17T15:09:33.133 に答える