1

次のコードがあります。

import os, fnmatch, sys
print ("HERE")
def test(arg):
    print ("arg" + arg)

testコマンドラインからスクリプトを実行するときに関数を呼び出すにはどうすればよいですか?

4

5 に答える 5

3

この python イディオムもよく使われます。

if __name__ == "__main__":
    # do stuff
    ...

コンソールからスクリプトを実行すると、この if 句内のすべてが実行されます。そうすれば、ドライバーコードをモジュールファイルなどに入れることができます。

...上記を次のように置き換えると、test("blah blah")必要な結果が得られます:)

于 2013-03-28T20:22:47.023 に答える
2

Python でコマンド ライン オプションを取得する最も簡単な方法は、sys.argv. これにより、コマンド ライン オプションが配列の形式で格納されます。

引数の出力は非常に簡単です。

import sys
print(str(sys.argv))

このスクリプトで次のコマンド ラインを実行すると、次のように出力され python test.py arg1 arg2 arg3ます。['test.py', 'arg1', 'arg2', 'arg3']

これを使用して、関数の呼び出しを構築できます。しかし、出力でお気づきかもしれませんが、出力には引数だけでなく、実行したファイルの名前も含まれています。このため、最初に、ユーザーがファイル名以外に少なくとも 1 つの引数を提供したことを確認する必要があります。

lenを使用してこれを行います。

import sys
if len(sys.argv) > 1:
   print(sys.argv[1])

これを関数で使用して、最初の引数を出力できます。

import sys
def test(arg):
   print ("arg" + arg)
if len(sys.argv) > 1:
   test(sys.argv[1])

testコマンドラインから関数を実行したい場合は、 OptionParserのようなものを使用して引数を解析することをお勧めします。ただし、これOptionParserは推奨されていないことに注意してください。代わりにArgParse の使用を検討する必要があります。

OptionParserこれは、関数を使用した実際の例です。

from optparse import OptionParser

# Options/Args
parser = OptionParser()

# Add Options
parser.add_option("-t", "--test", dest="test")

# Parse the Options
(options, args) = parser.parse_args()
usage = "usage: %prog [options] arg"
parser = OptionParser(usage)

print ("HERE")
def test(arg):
    print ("arg: " + arg)

# If the command line for test was specified.
if options.test:
    # Run the test function.
    test(options.test)

アプリケーションを実行するときは、追加-t your-textして関数を呼び出すだけです。

例えば python3 test.py -t hello

出力します:

HERE
arg: hello
于 2013-03-28T20:20:24.457 に答える
2

Python の def コンストラクトは、'define' の略です。作成したコード ブロックは、テスト関数を定義しますが、それを呼び出しません。インタープリターでテスト関数を定義した後、コマンドを実行できます

test('whatever') 

「なんでも」はあなたが望むものです。または、test を定義した後にそのコマンドをファイルに入れ、test.py と入力することもできます。

于 2013-03-28T20:25:23.787 に答える
1

引数なしの非常に単純な例を次に示します。

def do_hex():
text=raw_input("Enter string to convert to hexadecimal: ")
print "HEX: " + text.encode('hex')

#call the function

do_hex()
于 2013-03-28T20:41:36.680 に答える
1

def test(arg):
    print ("arg" + arg)

書きます

test('testing')

次に、以前と同じ方法で実行します。ユーザー入力で実行するには、

uinpt = raw_input("Enter something: ")
test(uinpt)
于 2013-03-28T20:20:53.510 に答える